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"

とかで.