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