Pages

2006-03-20

Emacs の locate コマンド

Linux には locate というコマンドがある。man を引くと

locate - ファイル名データベースからパターンに合うものを表示する

という風に説明されてる。極端な言い方をすれば、ファイル名限定の Google Desktop。インデックス・データベースを作っておいて、そこからファイルを検索するツール。例えば、foo.c を探す場合はこんな風に使う。

$ locate foo.c

UNIX 使いは grep コマンドを併せてファイルを絞り込む。/usr/bin 以下にある perl を含むファイルを探すならこんな感じ。

$ locate perl | grep usr/bin
/usr/bin/perlivp
/usr/bin/find2perl
/usr/bin/perlbug
/usr/bin/perl
/usr/bin/perldoc
/usr/bin/perl5.8.3
/usr/bin/perlcc
/usr/bin/foomatic-perl-data

最近の Linux なら locate 用のインデックス作成はデフォールトで実行されるようになってる。もし locate コマンドを実行してインデックスがないと言われたら root になって updatedb コマンドを実行しやう (後で crontab の設定もしとくといい)。

さて、本題。この locate コマンドを Emacs の中から呼び出すコマンドがある。

M-x locate

ファイル・パターンを聞かれるので答えると、ウィンドウが二つに分かれて一方に locate コマンドの結果が返る。コマンドラインで locate を実行するのと比べて何がイイって、ファイル名の上で RET するとファイルを開いてくれること。

locate と grep を Emacs 上で組み合わせたければ、

M-x locate-with-filter

まず最初にファイル名を、次に fileter (grep に相当) を聞いてくる。

Emacs の locate コマンドは、特に Makefile で library のパスを書く時に重宝する。一度お試しあれ。

No comments:

Post a Comment