mdfindのクエリ
課題でmdfindを使う必要が出てきたのでメモ
mdfindでCファイルを見つけたい。 mdfindはメタデータを使って引っ張ることができるようだ。
しかし,メタデータはどうやって調べるのか
メタデータ属性にどのようなものがあるのかを知るには,'mdls' コマンド
あの日,mdfind が見つけたもの - ばかもりだし
メタデータにはどんなデータがあるか調べるには,mdlsというコマンドを使えば良いらしい。 mdldに引数と与えるだけでメタデータが見られるようだ。
メタデータ確認用にCファイルを作って試してみる
touch test.c
mdls test.c
するとこのように表示された
_kMDItemOwnerUserID = 501 kMDItemContentCreationDate = 2015-12-20 09:00:55 +0000 kMDItemContentModificationDate = 2015-12-20 09:00:55 +0000 kMDItemContentType = "public.c-source" kMDItemContentTypeTree = ( "public.c-source", "public.source-code", "public.plain-text", "public.text", "public.data", "public.item", "public.content" ) kMDItemDateAdded = 2015-12-20 09:00:55 +0000 kMDItemDisplayName = "test.c" kMDItemFSContentChangeDate = 2015-12-20 09:00:55 +0000 kMDItemFSCreationDate = 2015-12-20 09:00:55 +0000 kMDItemFSCreatorCode = "" kMDItemFSFinderFlags = 0 kMDItemFSHasCustomIcon = (null) kMDItemFSInvisible = 0 kMDItemFSIsExtensionHidden = 0 kMDItemFSIsStationery = (null) kMDItemFSLabel = 0 kMDItemFSName = "test.c" kMDItemFSNodeCount = (null) kMDItemFSOwnerGroupID = 20 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 0 kMDItemFSTypeCode = "" kMDItemKind = "C source" kMDItemLogicalSize = 0 kMDItemPhysicalSize = 0
この中で使えそうなのは,kMDItemKind = "C source"あたり。
mdfind kMDItemKind = "C source"
実行! ・・・ 何も表示されない
もう一個使えそうな kMDItemContentType = "public.c-source"とか使ってみる。
mdfind kMDItemContentType = "public.c-source"
すると.cファイルがずらずらと表示された。
kMDItemKindでは表示できない理由は分からないが.cファイルを表示することができた。
2017/11/09追記
kMDItemDisplayName 使ったほうがよさそう?
mdfind kMDItemDisplayName = "*.c"
とかで.