[Hyper Estraier] Hyper Estraierの検索結果を表示するコマンド
環境
この記事の内容は、Hyper Estraier 1.3.6, Ubuntu Linux 6.10で確認しました。
はじめに
手元に370,000件を越える大量のメールがあり、これをgrep以外で効率よく検索する手段はないものか探っていたのですが、Hyper Estraierを試してみることにしました。
データベースは、以下のコマンドで生成します(ホームディレクトリがカレントディレクトリで、Maildir/inboxがメールボックスだとします)。
$ estcmd gather -il ja -fm mail.db Maildir/inbox
検索結果を表示するコマンド
データベースの検索は"estcmd search ..."で行うのですが、これは文章のIDを出力するので、このIDをもとに"estcmd get ..."で対象のメールのパス名を取得し、そのファイルを表示するコマンドを作成しました。
#!/bin/sh awk="/usr/bin/awk" cat="/bin/cat" estcmd="/usr/bin/estcmd" nkf="/usr/bin/nkf" xargs="/usr/bin/xargs" db="${HOME}/mail.db" ${estcmd} search "${db}" "$@" | ${awk} 'BEGIN{ line = 0; } /^--------/{ line++; } /^[0-9]+$/{ if (line == 2) { print $0; } }' | while read id do ${estcmd} get "${db}" ${id} _lreal done | ${xargs} ${cat} | ${nkf} -w
これを${HOME}/bin/mailに保存したら、
$ mail foo
で、"foo"を含むメールを表示できます。
しばらく、これを使ってみようと思います。