あの日,mdfind が見つけたもの
先日の
結局,何も残らなかった,という、またその話w、本当に "空虚" と言う表現以外の何ものでもない,ヨドンダお休みの日を...晒したわけですが.
その中でオモイシッタことのひとつ.
mdfind でディレクトリー名で検索するには,mdfind "kMDItemFSName == '<keyword>' && kMDItemKind == 'フォルダ'"
なんだって
-x オプションによって流れるターミナルを眺めながら,以外にも結構負荷があるようなのが find ... | grep ...
.
見ていて,そしたらせっかくだし,と mdfind を考てみたわけです.
これらは,そんな作業の中でのこと.
ディレクトリーのみを検索対象にするには,query を使わなくてはならない.
最初,find みたく?,指定できるオプションがあるだろうと,と軽く考えていたのでちょっと焦った.
無い.
query というものを使うのかな?
と,まさか使う事になるだろうとは思ってもいなかった query について少し掘ってみることに.
query の構文は attribute == value
左辺のキー,メタデータとかメタデータ属性と言うみたいです,と値,それぞれに半角スペースを入れつつ演算子で結ぶ.
メタデータ属性にどのようなものがあるのかを知るには,'mdls' コマンド
ビンゴ! と,こちらから知ったこと.
'mdfind' の "md" に "ls" ってことかしら.
具体的に探したいターゲットがあるならソレを,ボンヤリしていれば似たアイテムを,引数に当て mdls <taget>
,こんな感じで enter.
ベロっとリストを出してくれます.
この結果から使うメタデータ属性,そしてヒットさせる値を拾うといいのかな,と思います.
今回の場合,属性は 'kMDItemKind'.
これはいいのですが,値はなんと 'フォルダ'.日本語.
ちょっと信じられなくて,参考までに参照先にあったように 'Folder' を使って検索してみたらエラー.ふーん(笑
query を使ったらアイテムを指定できない
上手く表現できてないですが,こういうのが出来ないみたいなのです.
例です.
例えば,フォルダー名に
mdfind <keyword> "kMDItemKind == 'フォルダ'"
これダメみたいなのです.
じゃぁどうするか.
また別のメタデータ属性でぶつけてやることになります.例を引き継げば,"kMDItemFSName == '<keyword>'"
となるわけです.
と次に気になるのが,条件が複数になった場合は,どう繋ぐか,という話です.
query 複数条件は and は "&&",or は "||".
ちょろっと書いてありました.ちょっとけっこー彷徨いました(笑
Queries can be combined using a C-like syntax for AND (&&) and OR (||).
ということで,mdfind "kMDItemFSName == '<keyword>' && kMDItemKind == 'フォルダ'"
で,名前に
おしまい.