2011-04-03

Spotlight の検索結果や、スマートフォルダを Dired で表示する mdfind-dired.el

GNU Emacs に含まれる find-dired.el は指定ディレクトリ以下を find コマンドで検索し、結果を Dired で表示してくれます。
それを Spotlight のコマンドライン版である mdifnd で動くように修正を加えたものが mdfind-dired.el です。

できることは

  • Spotlight 検索を Emacs から実行し、その結果を Dired で表示する
  • スマートフォルダ (.savedSearch) を Dired で開く

動作環境

GNU Emacs 22 と 23。 Mac OS X 10.4 以上ですが、一部使えないコマンドがあるので 10.5 以上が推奨です。
GNU Emacs 23 と Mac OS X 10.6 でテストしています。

インストール

mdfind-dired.el
https://gist.github.com/900452

gist から raw をクリックし、 mdfind-dired.el を保存する。
load-path の通った場所にファイルを置き、以下のコードを ~/.emacs.el または ~/.emacs.d/init.el に加える。
(バイトコンパイルは任意です。)

(require 'mdfind-dired)
(add-to-list 'auto-mode-alist
             '("\\.savedSearch\\'" . mdfind-dired-change-to-dired))

キーバインドの設定は hook でします。

(add-hook 'mdfind-dired-hook
          (lambda ()
            (local-set-key "," 'mdfind-dired-toggle-visibility)))

使い方

mdfind の使い方は man ページ man mdfind に載っています。

M-x mdfind-dired
mdfind に生の検索語を入力し、結果を Dired で表示。
検索語は mdfind に渡す前にシェルに渡されるので、" * () & | $ 等の文字はエスケープする必要がある。(他のコマンドではエスケープする必要はない。)
C-u 付きで一つ、または複数のディレクトリを指定し、検索範囲を絞ることができる。
その際、ミニバッファを空欄にして RET を打鍵することで入力を終了する。この挙動は他のコマンドでも同じ。
M-x mdfind-dired-name (または mdfind-name-dired)
Mac OS X 10.5 以上が必要。 mdfind -name と同じ。ファイル名で検索する。
M-x mdfind-dired-interpret
Mac OS X 10.5 以上が必要。 mdfind -interpret と同じ。Spotlight メニューに入力する書式がそのまま使える。
例えば kind:image date:"this week" と入力すると、今週(作成、更新、開いた)の画像を検索。
M-x mdfind-dired-smartfolder
スマートフォルダを開く。
M-x mdfind-dired-toggle-visibility
ファイルのディレクトリ部分を「表示 / 隠す」。
mdfind の検索結果はトップディレクトリからのパスであることが多いので、例えば長いパスを
Users/foo/bar/baz/qux/quux/corge/grault/garply/waldo/fred/plugh/xyzzy/thud.txt
このように短縮表示する。
.../thud.txt
デフォルトの「表示 / 隠す」の状態は変数 mdfind-dired-default-visible で設定する。



Spotlight の使い方についてはこれらのページを参照してください。

他に Spotlight FS でも似たようなことができます。