2010年12月4日土曜日

spotlightは検索条件が3つになるとバグる

前の投稿で書いたように,拡張子とクリエータでファイルを検索する必要がでてきたのでやってみた.

探したいのは,クリエータが「MMKE」でなく,拡張子が「.tex」である項目.
やりかたは以下の通り.

Finder 上でメニューから「ファイル」>「新規スマートフォルダ」とやって新しいウィンドウを開く.ついで,プラスボタンのクリックによって新しい検索条件の入力行を2行追加し,
RAWクエリーが「kMDItemFSCreatorCode!="MMKE"」
RAWクエリーが「kMDItemDisplayName=="*.tex"」
と入力する.

すると,ファイルが腐るほど引っかかるので,これは適わんということで,日付指定することにした.検索条件の入力行をもう一つ追加し,
RAWクエリーが「kMDItemFSCreationDate>$time.iso(2009-01-01)」
と入力する.これは作成日が2009年1月1日以降のファイルを探すということであるが,この条件を追加すると,ヒットするファイルが0になる.実際には該当ファイルがあるにもかかわらずだ.

これは一体どういう事なんだ??

3つの条件のうちいずれか1つを抜かして検索すればちゃんとファイルがリストアップされるから,検索条件に誤りがある訳ではない.よって,条件を3つ与えると機能しなくなると考えざるをえない.

一方,terminal で mdfind を使うと,ちゃんと検索できるようである.

$ mdfind 'kMDItemDisplayName=="*.tex" && kMDItemFSCreationDate>$time.iso(2009-10-01) && kMDItemFSCreatorCode!="MMKE"'

ただ,見つかるファイルの数がなんとなく少ないような気がするのだが、、、まあそれは検索条件の問題とは別の話なので,ここでは棚に上げておこう.

とりあえず,実験で得られた結論.

Spotlight検索は条件を3つ以上指定すると,誤動作する.信頼できない.
こういう場合は mdfind を使うべし.

なお,mdfind と Spotlight検索では日付指定する方法などについて文法が異なるので注意が必要.

mdfind における検索条件の文法は Apple のサイト 「Query Expression Syntax」にきちんとまとめてあるので,そちらを参照しましょう.
 

0 件のコメント: