mdfindのクエリーからFinderのスマートフォルダを作成するAppleScript

事前に言っておくが、企画倒れで頓挫しました。

 

別作業で、クリエイタ&ファイルタイプでファイルを検索する必要が発生したのだが、スマートフォルダではその検索条件(検索キー)が存在しない。よって、mdfindコマンドを使うことになる。

ファイルタイプがTEXTのファイルを探す場合、mdfindコマンドでは以下のように入力する。

 

mdfind "kMDItemFSTypeCode == 0x54455854"

 

 

mdlsの実行結果でファイルタイプを文字列に表示しているが、整数での指定になるので注意。

0x54455854がTEXTの文字コードを示している。調べるには、0xEDのような16進エディッタが便利。

 

mdls -name kMDItemFSTypeCode "/Volumes/My Book/OffLaw/APPLE/982939698.dat"

 

実行結果

kMDItemFSTypeCode = "TEXT"

 

 

さて、検索すると大量にヒットするので、Finderのフォルダで表示したい。いっそ、mdfindのクエリーからFinderのスマートフォルダを作成するAppleScriptを作るかと企んだが、なかなかしんどい。

 

まず、スマートフォルダは拡張子がsavedSearchで、通常はホームのライブラリの「保存済みの検索条件」フォルダに保存されている。ファイル形式は、XML形式というよりもplist形式。なぜか、テキストエディットにドロップするとそのまま開ける。

 

下の画像は、base.savedSearchをテキストエディットで開いたもの。

f:id:tbboy:20140508064730p:plain

この内容を解析して、mdfindのクエリーを流し込めれば言い訳だが、解析に時間がかかるので止めた。

解析する場合、まず作成済みのスマートフォルダをテキストエディットで開いて書き換えるという方法はできない。一度でもFinderで開いたスマートフォルダは、システムにキャッシュされるようで、書き換えても反映しない。Finderの強制終了かマシンの再起動が必要となる。(いつの間にか、スマートフォルダの検索条件が再編集できなくなってるな。最初からか?)

テキストエディットで新規作成して、丸々コピペして改変し拡張子savedSearchで保存した方がいいだろう。何度も何度も作り捨てのスマートフォルダを作成するのは苦痛でした。

ちなみに、書き換えたスマートフォルダがおかしい場合、Finderが落ちます

 

単純に、手作業でRawQueryの部分だけ書き換えた方がいいな、これは。

 

mdfindでonlyinを指定する場合は、RawQueryDictのSearchScopesも書き換える。onlyinに指定したパスを書くか、Mac全体(このMac)の場合は、kMDQueryScopeComputerを記述する。

SearchCriteriaのCurrentFolderPathと同期しているので、これは削除すること。

 

<key>SearchScopes</key>

<array>

    <string>kMDQueryScopeComputer</string>

</array>

 

 

 

ちなみにsavedSearchのファイルは、Safariでも開くことができてFinderに渡される。

下のリンクを踏むとOSXの場合、タイトルがエロ動画のスマートフォルダが開くかと。

 

え~!! はてなブログってファイルのアップロードが出来ないよ。画像だけかよ。

 

 

 

改変スマートフォルダの検索条件を表示してはいけない。

スマートフォルダの検索条件が再編集出来ないかと思ったら、サイドバーのスマートフォルダを右クリックして、「検索条件を表示」で再編集が出来るな。

 

f:id:tbboy:20140508065729p:plain

 

・・・・・・・え~!! 書き換えた検索条件を表示した途端、勝手に検索条件を書き換えてるよ! Finder未対応の検索条件だからどうなるか興味があったけど、Finderが落ちるんじゃ無くて適当に書き換えてくるとは。TimeMachineがあって助かった。

 

環境

OSX 10.9 (Mavericks)