
mdfind を使ってコマンドラインから Spotlight を使用する
SpotlightはMac OS Xのお気に入りの機能の一つで、Dockよりもよく使っているかもしれません。コマンド+スペースキーで書類やメールを素早く見つけたり、アプリケーションを起動したりできるのは本当に便利です。ターミナルを使わずに操作しなければならない人もいるでしょうから、この超高速検索機能がコマンドラインでも使えると便利だと思いませんか?実は、Spotlightはあります。ターミナル(またはiTerm)を開いて、Spotlightのコマンドライン版、mdfindを使ってみてください。
Mac OS X の Unix 基盤についてよく知らない、またはよく知らない場合でも、これを試すことができます。
ターミナルを開いて「mdfind」と入力すると、検索クエリを指定していないため、いくつかの指示が表示されます。これは短縮されたマニュアルページのようなものですが、他のほとんどのコマンドラインツールと同様に、-h フラグを使用して手動で取得することもできます。
$ mdfind
mdfind: no query specified.
これは、検索するデータを mdfind に提供する必要があるためです。たとえば、次のようになります。
mdfind [search directive]
しかし、ヘルプ セクションを返すことによって得られる完全な命令セットに進みましょう。これを少し確認してみましょう。
$ mdfind
mdfind: no query specified.
Usage: mdfind [-live] [-onlyin directory] query
list the files matching the query
query can be an expression or a sequence of words
-live Query should stay active
-onlyin dir Search only within given directory
-0 Use NUL (``\0'') as a path separator, for use with xargs -0.
example: mdfind image
example: mdfind "kMDItemAuthor == '*MyFavoriteAuthor*'"
example: mdfind -live MyFavoriteAuthor
混乱しているように見えますが、そうではありません。
「recipe」という名前のファイルを見つけたい場合、そのファイルがドキュメント フォルダ内にあることが分かっている場合は、次のように入力します。
$ mdfind recipes -onlyin ~/Documents/
レシピがたくさんある場合は、次に示すように、出力を more にパイプすると良いでしょう。
$ mdfind recipes -onlyin ~/Documents/ | more
結果をmoreにパイプすることで、一度に1画面分を表示できます。moreを終了するには、control-cを押します。
何かがどこにあるか分からない場合は、もっと曖昧にして、名前修飾子のみを使用することもできます。
mdfind -name Pumpkin
これにより、Mac 全体で名前に「Pumpkin」が含まれるすべてのものが検索され、すべてが報告されます。
mdfind コマンドにはまだまだ使える機能がたくさんありますが、今はシンプルにまとめておきます。好奇心というよりは、mdfind コマンドは一般的な Mac ユーザーよりも、システム管理者、Unix オタク、シェルスクリプト作成者、プログラマーにとってより便利なものになるかもしれません。それ以外の人にとっては、コマンドスペースこそが頼りになる存在であり、不満はありません。