これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド mu-find です。
プログラム:
NAME
mu_find - 電子メール メッセージを検索します。 mu データベース。
SYNOPSIS
mu find [オプション] <検索 表現>
DESCRIPTION
mu find は mu 以前に保存された電子メール メッセージを検索するコマンド mu
index(1).
検索 MAIL
mu find 何らかの検索パターンに一致するデータベース内のメッセージの検索を開始します。 のために
例:
$ mu 件名:雪 差出人:ジョンを検索
次のような、件名フィールドに「snow」が含まれる John からのすべてのメッセージが検索されます。
2009-03-05 17:57:33 EET ルシア[メール保護]> 雪の中を走る
2009-03-05 18:38:24 EET マリウス[メール保護]> Re: 雪の中を走る
これはデフォルトのプレーンテキスト出力であるため、使用する必要がないことに注意してください。
--format=プレーン。 他のタイプの出力 (シンボリックリンク、XML、S 式など) については、「」を参照してください。
での議論 OPTIONS- 以下のセクションについて - フォーマット.
検索パターンはコマンドラインパラメータとして取得されます。 検索パラメータが次のとおりである場合
(例のように) 複数の部分からなる部分は、論理的な部分があるかのように扱われます。 そして
それらの間の。
mu 検索機能は Xapian データベースに依存しているため、すべての機能が提供されます。
Xapian が提供する検索機能。 すべての詳細については、以下を参照してください。
http://xapian.org/docs/queryparser.html
一つの特別な特徴は、 mu つまり、大文字と小文字が区別されないということです。
文字のアクセント付きまたはアクセントなしのバージョンもありません。 すべて一致します。 一般的に、 mu 努める
望ましくない結果をフィルタリングすることは、通常、フィルタリングを行わないことよりも望ましいため、マッチングには「熱心」である必要があります。
一致するメッセージ。
ワイルドカード検索は、 * 最後と一致します n 文字列内の文字。
文字列は常に、ワイルドカードの前に XNUMX つ以上の文字で始まる必要があります。 mu サポート
ワイルドカードは、maildir とパスを除くすべてのフィールドを検索します。 すべてのメールを取得するには
で始まる単語を含む件名 コム、次を使用できます。
$ mu find '件名:com*'
コンピュータ、コメント、編集などに関するメールを受け取ります。 から実行する場合に注意してください
コマンドラインではクエリを引用符で囲むことが重要です。そうしないとシェルが
「*」を解釈します。 「*」はワイルドカードを呼び出すことを覚えておくことも同様に重要です。
検索語の右端の文字として使用される場合にのみ検索します。 さらに、それは
正規表現。
メッセージを検索する基本的な方法は、メッセージに一致する単語を入力することです。
インターネット検索エンジン。 例えば、
$ムー モンキーバナナを探せ
本文または件名のいずれかに「サル」と「バナナ」の両方を含むすべてのメッセージが検索されます。
またはアドレスフィールドの XNUMX つ (to/from/cc)。
前述したように、照合では大文字と小文字とアクセントは区別されません。 したがって
$ mu は、Mönkey BÄNAÑå を見つけます
上記の例と同じ結果が得られます。
mu メッセージ内の特定のフィールドのプレフィックスも認識します。 例えば:
$ mu 件名を検索: ペンギン
have the word を含むメッセージを見つけるには ペンギン 件名フィールドに。 短縮することもできます
件名: ちょうど s:。 検索フィールドとその略語の完全な表は次のとおりです。
cc,c Cc (カーボンコピー) 受信者
bcc,h Bcc (ブラインド カーボン コピー) 受信者
from,f メッセージ送信者
to,t To: 受信者
subject,s メッセージの件名
maildir,m メールディレクトリ
msgid,i メッセージID
prio,p メッセージの優先度 (「低」、「標準」、または「高」)
flag,g メッセージフラグ
date,d 日付範囲
size,z メッセージサイズ
embed,e 埋め込まれたテキスト部分 (メッセージ、添付ファイル) 内を検索します。
file,j 添付ファイル名
mime,y XNUMX つ以上のメッセージ部分の MIME タイプ
tag,x メッセージのタグ (Xラベル および X キーワード)
list,v メーリング リスト (List-Id 値など)
特殊なフィールドもあります contact、すべての連絡先フィールドに一致します (from, 〜へ, cc
BCC)、及び レシピ、すべての受信者フィールドに一致します (〜へ, cc BCC).
上記のフィールドのほとんどの意味は明らかですが、一部のフィールドには追加の情報が必要です。
議論。 まず、メッセージ フラグ フィールドは、メッセージの特定のプロパティを次のように記述します。
次の表にリストされています。
d,draft ドラフトメッセージ
f,フラグ付き フラグ付き
n,new 新しいメッセージ (new/Maildir 内)
p,passed 合格 ('処理済み')
r,返信されました
s、見た
t,trashed 削除対象としてマークされました
a,attach 添付ファイルあり
z,signed 署名付きメッセージ
x,encrypted 暗号化されたメッセージ
l,list メーリングリストのメッセージ
これを使用すると、たとえば添付ファイルのあるすべての署名済みメッセージを検索できます。
$ mu フラグを検索:署名されたフラグ:アタッチ
暗号化されたメッセージも署名される場合がありますが、これは復号化した後にのみ表示されます。
したがって、目に見えません mu.
メッセージ優先度には、低、標準、高の XNUMX つの値があります。 私たちはそれらに合わせることができます
事前: - たとえば、件名に次の内容が含まれる優先度の高いメッセージをすべて取得します。
何かの鳥:
$ mu find prio:high subject:nightingale
Maildir フィールドには、開始するディレクトリ パスが記述されます。 After Maildir ベースのパス、および
前 /cur/ or /新着/ 一部。 たとえば、次のようなファイル名を持つメッセージがあるとします。
~/Maildir/lists/running/cur/1234.213:2、、あなたはそれを見つけることができます(そして、他のすべてのメッセージは
同じ maildir) と:
$ mu find maildir:/lists/running
先頭の「/」に注意してください。 「ルート」maildir 内のメールを照合したい場合は、
シングル '/':
$ mu find maildir:/
(もちろん、 m: 代わりにショートカット メールディレクトリ:)
当学校区の 日付: (または d:) 検索パラメータは、以下の範囲を取るという点で「特別」です。
日付。 現時点では、これらの日付は ISO 8601 形式 (YYYYMMDDHHMM) です。 省略しても構いません
これが右側の部分である場合、これが最初であるか終わりであるかに応じて、mu が残りを追加します。
日付の間隔。 たとえば、間隔「201012」の始まりは次のようになります。
「20101201010000」、つまり 1 年 2010 月 00 日の 00:XNUMX として解釈されます。
間隔の場合、これは「20101231122359」、つまり 31 年 2010 月 23 日 59:XNUMX として解釈されます。 もし
左側の部分を完全に省略すると、開始日は 1 年 0 月 XNUMX 日とみなされます。
00:00に。 同様に右側を省略した場合、終了データは最後まであるものとみなされます。
9999年のXNUMX番目。
5 年 2009 月 2 日から 2010 年 XNUMX 月 XNUMX 日までのすべてのメッセージを取得するには、次のようにします。
使用できます:
$ mu 検索日:20090505..20100602
数字以外の文字は無視されるため、以下は同等ですが、より読みやすくなります。
$ mu 検索日:2009-05-05..2010-06-02
精度は分までであり、時間には 24 時間表記が使用されるため、別の例を示します。
だろう:
$ mu find date:2009-05-05/12:23..2010-06-02/17:18
mu 正の数値の後に h (時間) が続く形式の相対日付も理解できます。
d (日)、w (週)、m (30 日)、または y (365 日)。 これを説明するいくつかの例:
過去5時間XNUMX時間
過去 2 週間前
過去 3 日間に 30 メートルを XNUMX 回
過去 1 年 365 日
この表記を使用すると、たとえば、XNUMX ~ XNUMX 週間前のメッセージを照合できます。
$ mu 検索日:3w..2w
日付には特別なキーワードがいくつかあります。それは、現在の瞬間を意味する「now」です。
今日の始まりを表す「today」。 したがって、今日送受信されたすべてのメッセージを取得するには、
使用できます:
$ mu 検索日:今日..現在
当学校区の サイズ or z 一致させることができます サイズ 範囲 -- つまり、バイトを持つメッセージに一致します-
一定の範囲内のサイズ。 単位 (B (バイト)、K (1000 バイト)、M (1000 *)
1000バイト)がサポートされています)。 たとえば、10Kb から 2Mb までのすべてのメッセージを取得するには
(SI 単位を想定)、以下を使用できます。
$ mu 検索サイズ:10K..2M
検索語にスペースが含まれている場合は、次のことを行う必要があることに注意してください。 率 それらの
部品を切断してマーキングします。 このように、 を特定いたします。 we 見ます at フォロー中 例:
$ mu find maildir:/送信済み アイテム ヨーグルト
$ mu find maildir:'/送信済み アイテム」 ヨーグルト
当学校区の 最初の クエリー 検索 の メッセージ in /送信済み メールディレクトリの一致 アイテム ヨーグルト,
一方、XNUMX 番目のクエリは /送信済み アイテム maildir で一致するメッセージを検索する
ヨーグルト.
合わせることができます を "" (または '') を使用したメッセージ:
$ 検索 ""
OPTIONS
重要なオプションの一部については、 mu(1) ここではなく man ページです。
これらは複数の mu-コマンドに適用されます。
当学校区の find-command には、方法に影響を与えるさまざまなオプションがあります mu 結果を表示します。 もし
何も指定しない場合、デフォルトは次のとおりです --fields="d f s", --sortfield=日付
- 逆行する.
-f, - 田畑=
出力に表示されるフィールドを決定する文字列を指定します。 これ
文字列は複数の文字で構成されます (件名の「s」や件名の「f」など)
from)、出力内の実際のフィールドに置き換えられます。 そうでないフィールド
known はそのまま出力され、簡単なフォーマットが可能になります。
具体的な例を挙げますと、以下の通りです。
$ mu find subject:snow --fields "dfs"
メッセージに「snow」が含まれるすべてのメッセージの日付、件名、送信者がリストされます。
テーマ。
置換文字の表は、検索用のリストのスーパーセットです。
パラメーター; 完全なリスト:
t to: 受信者
c cc: (カーボンコピー) 受信者
h Bcc: (ブラインド カーボン コピー、 h同定) 受信者
d 送信済み dメッセージを食べました
f メッセージ送信者 (fロム:)
g メッセージフラグ (flags)
l メッセージへのフルパス (l場所)
pメッセージ p優先度(高、通常、低)
メッセージ s主題
私はメッセージ-id
m mエイルディル
メッセージ フラグは、上記のメッセージ フラグですでに見たものと同じです。
したがって、「閲覧」され、添付ファイルがあり、署名されたメッセージには「asz」が付きます。
対応する出力文字列として 'nx' が付きますが、暗号化された新しいメッセージには 'nx' が含まれます。
-s, --ソートフィールド = -z,
- 逆行する 検索結果を並べ替えるフィールドと方向を指定します
(つまり、「reverse」は、ソートを元に戻す必要があることを意味します - ZA)。 次の
フィールドがサポートされています:
cc,c Cc (カーボンコピー) 受信者
bcc,h Bcc (ブラインド カーボン コピー) 受信者
日付、メッセージ送信日
from,f メッセージ送信者
メールディレクトリ,m メールディレクトリ
msgstr,i メッセージ ID
prio,p メッセージの優先順位
件名、メッセージの件名
to,t To:-受信者
したがって、たとえばメッセージを日付で並べ替えるには、次のように指定できます。
$ mu find fahrrad --fields "dfs" --sortfield=date --reverse
ソートフィールドを指定すると、デフォルトではメッセージが逆順にソートされることに注意してください。
(降順)順序(たとえば、最低から最高へ)。 通常はこれが良い選択ですが、
ただし、日付の場合は、逆方向に並べ替えた方が便利な場合があります。
-n, --maxnum=
> 0 の場合、その数のエントリを最大表示します。 指定しない場合はすべて一致
エントリが表示されます。
--サマリーレン=
> 0 の場合、メッセージのその行数を使用して概要を提供します。
- フォーマット=プレーン|リンク|xクエリ|xml|セックス
指定した形式で結果を出力します。
デフォルトは 平野つまり、メッセージごとに XNUMX 行の通常の出力です。
リンク 見つかったメッセージへのシンボリック リンクを含む maildir として結果を出力します。
これにより、メール クライアントとの統合が容易になります (詳細については以下を参照)。
詳細はこちら: --linksdir --クリアリンク を参照してください。
XML 検索結果を XML としてフォーマットします。
性別 検索結果をLispプログラミングで使用されるS式としてフォーマットします。
環境。
xクエリ は、検索語に対応する Xapian クエリを示しています。 これは次のことを目的としています
デバッグ目的のため。
--linksdir = -c, --クリアリンク
結果を、見つかったメッセージへのシンボリック リンクを含む maildir として出力します。 これ
メールクライアントと簡単に統合できます (詳細については以下を参照してください)。 mu
maildir がまだ存在しない場合は作成します。
指定した場合 --クリアリンク、既存のすべてのシンボリックリンクがターゲットからクリアされます。
メールディレクトリ; これにより、同じディレクトリを再利用できるようになります。 代替案としては、
事前にターゲットディレクトリを削除してください。ただし、これは誤って削除する可能性が高くなります。
削除してはいけないものを削除すること。
$ mu find grolsch --linksdir=~/Maildir/検索 --クリアリンク
見つかったメッセージへのリンクを保存します ~/Maildir/検索。 ディレクトリが存在しない場合は、
まだ存在する場合は作成されます。
注:いつ mu これらのリンクの Maildir を作成すると、自動的に
.noindex ファイル、ディレクトリを除外する mu index.
--after = メッセージ ファイルが
最終更新日 (mtime)後 . UNIXです time_t 値、
1970 年 01 月 01 日からの秒数 (UTC)。
コマンドラインからは、 date この値を取得するにはコマンドを使用します。 例えば、
過去 5 分間に変更された (または作成された) メッセージのみを考慮すると、
指定する
--after=`日付 +%s --date='5 分前'`
これは GNU を前提としています。 date
--exec=
--exec コマンドにより、 command 一致したメッセージごとに実行されます。 のために
たとえば、「milkshake」に一致するすべてのメッセージの生のテキストを表示するには、次のように使用できます。
$ mu find ミルクシェイク --exec='less'
これは次とほぼ同等です。
$ mu ミルクセーキを検索 --fields="l" | xargs が少ない
-b, --ブックマーク=
ブックマークされた検索クエリを使用します。 このオプションを使用すると、ブックマーク ファイルからクエリが実行されます。
他の検索クエリの先頭に追加されます。 見る ムーブックマーク(1)の詳細はこちら
ブックマークファイル。
--スキップダップス,-u 複数のメッセージがあるときはいつでも、
同じ名前なので、最初のもののみを表示します。 これは、同じもののコピーがある場合に便利です
メッセージ。これは、Gmail などを一緒に使用するときによく発生します。
オフラインマップ.
--include 関連,-r によって参照されるメッセージも含まれます
一致したメッセージ -- つまり。 同じメッセージの一部であるメッセージを含める
一致したメッセージとしてスレッドを作成します。 Gmail スタイルが必要な場合に便利です
「会話」。 これらの関連メッセージを見つけると、検索が遅くなることに注意してください。
-t, -スレッド メッセージを「スレッド」形式で表示します。つまり、
インデントと矢印で、リスト内の会話スレッドを示します。
一致するメッセージ。
スレッドリスト内のメッセージは、ディスカッションの深さに基づいてインデントされます。
および には、スレッド関連の情報を含む矢印のような接頭辞が付いています。
次の表のようなメッセージが表示されます。
| | 通常 | 孤児 | 重複 |
|---------------+----------+----------+-----------|
| 最初の子供 | `-> | `*> | `=> |
| その他 | |-> | |*> | |=> |
ここで、「孤立」とは、親メッセージ (一致リスト内) を持たないメッセージです。
重複とは、メッセージ ID が以前にすでに確認されているメッセージです。 これではないかもしれない
メッセージ ID がコピーされた場合、実際には同じメッセージではありません。
スレッドの決定に使用されるアルゴリズムは、Jamie Zawinksi のアルゴリズムに基づいています。
説明: http://www.jwz.org/doc/threading.html
例: クエリ
以下に簡単な例をいくつか示します mu 検索クエリ。 もっと複雑にすることもできます
さまざまな論理演算子、括弧などを使用したクエリですが、著者の
経験上、通常は、単に検索するだけの単純なクエリでメッセージを見つける方が速くなります。
いくつかの言葉。
「bee」と「bird」の両方を含むすべてのメッセージを検索します(任意のフィールド内)
$ mu 蜂と鳥を見つけてください
またはそれより短い、なぜなら そして 暗黙的に:
$ mu 蜂の鳥を見つける
フロドまたはサムのいずれかのメッセージをすべて検索します。
$ mu 'フロド OR サム' を見つけてください
件名が「wombat」で、「capibara」が任意の場所にあるすべてのメッセージを検索します。
$ mu 件名を検索: ウォンバット カピバラ
「アーカイブ」フォルダー内のフレッドからのすべてのメッセージを検索します。
$ mu find from:fred maildir:/Archive
添付ファイルのあるすべての未読メッセージを検索します。
$ mu 検索フラグ:添付フラグ:未読
PDF 添付ファイルのあるすべてのメッセージを検索します。
$ mu find mime:application/pdf
画像が添付されたすべてのメッセージを検索します。
$ mu find 'mime:image/*'
注[1]: 引数は引用符で囲む必要があります。そうしないと、シェルは「*」を解釈します。 注[2]:
「*」ワイルドカードは、検索語の最後 (右端) の部分としてのみ使用できます。 注3]:
単語以外の文字 (€ や ☺ など) はクエリでは無視されます。 検索することはできません。
統合 mu find mail クライアント
突然
突然 で次を使用できます ムットルク; F8 キーを押すと、
検索すると、F9 キーを押すと結果が表示されます。
# mu 用の mutt マクロ
マクロインデックス」 mu find --clearlinks --format=links --linksdir=~/Maildir/検索 " \
「見つけて」
マクロインデックス」~/Maildir/検索" \
「結果を見つけます」
旅行熱
サム B で次のことを提案しました mu-メーリングリスト。 まず以下を追加します
Wanderlust 設定ファイル:
(「elmo-search」が必要)
(エルモ検索登録エンジン
「mu」ローカルファイル
:prog "/usr/local/bin/mu" ;; またはインストールした場所に
:args '("find" パターン "--fields" "l") :charset 'utf-8)
(setq elmo-search-default-engine 'mu)
;; フォルダーまたは概要に「g」を入力したとき用。
(setq wl-default-spec "[")
を使用して検索できるようになりました。 g キーバインディング。 永続的な仮想を作成することもできます
メッセージが何らかの表現に一致する場合、次のようなものを追加してフォルダーを作成します。
あなたに従ってください フォルダ ファイルにソフトウェアを指定する必要があります。
Vフォルダ {
[日付:今日..今]!mu "今日"
[サイズ:1m..100m]!mu「大きい」
[フラグ:未読]!mu "未読"
}
Wanderlust を再起動すると、仮想フォルダーが表示されるはずです。
旅行熱 (古い)
統合する別の方法 mu さまよう 以下に示します。 前述の
の方法を推奨しますが、何らかの理由でうまくいかない場合は、以下の方法が考えられます。
代替。
(defvar mu-wl-mu-program "/usr/local/bin/mu")
(defvar mu-wl-search-folder "検索")
(defun mu-wl-search ()
「「mu」を含むメッセージを検索し、結果にジャンプします。」
(let* ((muexpr (読み取り文字列 "一致するメッセージの検索: "))
(sfldr (concat elmo-maildir-folder-path "/"
mu-wl-検索フォルダー))
(cmdline (concat mu-wl-mu-program " find "
"--clearlinks --format=links --linksdir='" sfldr "' "
muexpr))
(rv (シェルコマンドコマンドライン)))
(条件
((= rv 0) (メッセージ「クエリは成功しました」))
((= rv 2) (メッセージ「一致するものが見つかりませんでした」))
(t (メッセージ「クエリ実行エラー」)))
(= rv 0)))
(defun mu-wl-search-and-goto ()
「検索して、結果のあるフォルダーにジャンプします」
(相互の作用)
(いつ (mu-wl-search)
(wl-summary-goto-folder-subr
(連結 "." mu-wl-search-folder)
'強制更新 nil nil t)
(wl-summary-sort-by-date)))
;; サマリーとフォルダーの両方でクエリを実行する
(define-key wl-summary-mode-map (kbd "Q") ;; => クエリ
'(lambda()(インタラクティブ)(mu-wl-search-and-goto)))
(define-key wl-folder-mode-map (kbd "Q") ;; => クエリ
'(lambda()(インタラクティブ)(mu-wl-search-and-goto)))
リターン VALUE
mu find 正常に完了すると 0 を返します。 検索が実行された場合は、次のことが必要です
少なくとも XNUMX つは一致する必要があります。 それ以外の場合は、ゼロ以外の戻り値が返されます。次に例を示します。
| コード| 意味|
|------+--------------------------------|
| 0 | わかりました|
| 1 | 一般的なエラー|
| 2 | 一致するものはありません (「mu find」の場合) |
| 4 | データベースが壊れています |
エンコーディング
mu find 出力はロケールに従ってエンコードされます --format=プレーン (デフォルト)、および UTF-8
他のすべての形式の場合 (性別, XML).
onworks.net サービスを使用してオンラインで mu-find を使用する
