10.4の新機能Spotlight、慣れるまではそれほどでもありませんでしたが、慣れてくると便利ですね。検索も速いし。毎回毎回ファイルを見に行ってはこんなに速いはずがありませんね。ファイルが持っているメタデータを索引に格納しておいて、その索引を調べるから速いんですね。「メタデータ」というのは、「データについてのデータ」、つまり「このファイル何者よ」というのを表すデータです。
となると、気になるのは、このファイルはどんなメタデータを持っているのだろう、ということです(気になりませんか?そうですか。では、話の都合です。気になることにしてください)。そのファイルがどんなメタデータを持っているのか調べるコマンドが「mdls」です。書式は「mdls 調べたいファイル」というごく簡単なものです。「mdls」と打ち込んだ後に、ターミナルのウィンドウにファイルをドロップしてしまえば楽です。
まずは、このサイトのトップページのファイルで試してみましょう。
PowerBookG4:~ hiro$ mdls /Users/hiro/Documents/¥~nashorn/index.html /Users/hiro/Documents/~nashorn/index.html ------------- kMDItemAttributeChangeDate = 2005-08-28 10:48:36 +0900 kMDItemComment = "この間までUnixに対して縁の無かった筆者が、MacOS XのTerminal(中略)温泉の紹介もします。" kMDItemContentCreationDate = 2005-08-28 10:48:00 +0900 kMDItemContentModificationDate = 2005-08-28 10:48:00 +0900 kMDItemContentType = "public.html" kMDItemContentTypeTree = ("public.html", "public.text", "public.data", "public.item", "public.content") kMDItemDisplayName = "index.html" kMDItemFSContentChangeDate = 2005-08-28 10:48:00 +0900 kMDItemFSCreationDate = 2005-08-28 10:48:00 +0900 kMDItemFSCreatorCode = 0 kMDItemFSFinderFlags = 0 kMDItemFSInvisible = 0 kMDItemFSLabel = 0 kMDItemFSName = "index.html" kMDItemFSNodeCount = 0 kMDItemFSOwnerGroupID = 501 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 7839 kMDItemFSTypeCode = 0 kMDItemID = 1538987 kMDItemKeywords = (Mac, OS, "X,terminal,¥U6e29¥U6cc9") kMDItemKind = "HTML Document" kMDItemLastUsedDate = 2005-05-21 23:15:51 +0900 kMDItemTitle = "Hiro's Personal Pages" kMDItemUsedDates = (2005-04-29 23:01:06 +0900, 2005-05-21 09:00:00 +0900)
いろいろ出ましたね。HTMLファイルの場合、ファイルの種類や名前、サイズ、更新日と行ったごく基本的な情報のほかにも、kMDItemCommentにmetaタグのdescriptionが"kMDItemComment"に、keywordsが"kMDItemKeywords"に、titleタグの内容が"kMDItemTitle"として索引に取り込まれるようですね。
HTMLのような一般的なファイルなら上記のように様々な情報を索引化できますが、特定のソフトで生成したファイルとなると、ソフト側の対応次第ということになります。
例えば、日本では激しくマイナーな表計算ソフトMariner Calcのファイルをmdlsで調べてみると
PowerBookG4:~ hiro$ mdls /Users/hiro/Desktop/mariner /Users/hiro/Desktop/mariner ------------- kMDItemAttributeChangeDate = 2005-09-11 19:44:32 +0900 kMDItemContentCreationDate = 2005-09-11 19:44:03 +0900 kMDItemContentModificationDate = 2005-09-11 19:44:03 +0900 kMDItemContentType = "dyn.ah62d4rv4gk8zgwbyna" kMDItemContentTypeTree = ("public.data", "public.item") kMDItemDisplayName = "mariner" kMDItemFSContentChangeDate = 2005-09-11 19:44:03 +0900 kMDItemFSCreationDate = 2005-09-11 19:44:03 +0900 kMDItemFSCreatorCode = 1346458194 kMDItemFSFinderFlags = 0 kMDItemFSInvisible = 0 kMDItemFSLabel = 0 kMDItemFSName = "mariner" kMDItemFSNodeCount = 0 kMDItemFSOwnerGroupID = 501 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 8492 kMDItemFSTypeCode = 1397240912 kMDItemID = 1924784 kMDItemKind = "Mariner Spreadsheet Document" kMDItemLastUsedDate = 2005-09-11 19:44:03 +0900 kMDItemUsedDates = (2005-09-11 19:44:03 +0900)
ごく基本的な情報のほかにはMarinerのファイルであることぐらいしか分かりません。
一方、比較的早期に10.4に対応したMicro$oft Wordのファイルを調べてみると、
PowerBookG4:~ hiro$ mdls /Users/hiro/Documents/myStory/corbitte.doc /Users/hiro/Documents/myStory/corbitte.doc ------------- kMDItemAttributeChangeDate = 2005-05-21 23:11:35 +0900 kMDItemContentCreationDate = 2002-09-23 02:04:46 +0900 kMDItemContentModificationDate = 2004-09-30 01:13:47 +0900 kMDItemContentType = "com.microsoft.word.doc" kMDItemContentTypeTree = ( "com.microsoft.word.doc", "public.data", "public.item", "public.composite-content", "public.content" ) kMDItemDisplayName = "corbitte.doc" kMDItemFSContentChangeDate = 2004-09-30 01:13:47 +0900 kMDItemFSCreationDate = 2002-09-23 02:04:46 +0900 kMDItemFSCreatorCode = 1297307460 kMDItemFSFinderFlags = 256 kMDItemFSInvisible = 0 kMDItemFSLabel = 0 kMDItemFSName = "corbitte.doc" kMDItemFSNodeCount = 0 kMDItemFSOwnerGroupID = 501 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 21278 kMDItemFSTypeCode = 1463304782 kMDItemID = 21158 kMDItemKind = "Microsoft Word 文書" kMDItemLastUsedDate = 2005-05-21 23:11:08 +0900 kMDItemTitle = " スコットランド 一六四四年" kMDItemUsedDates = (2004-09-30 01:13:47 +0900, 2005-05-21 09:00:00 +0900)
"kMDItemTitle"として最初の行の内容が表示されています。
mdlsで使えるオプションは今のところ特定の項目だけを表示させる「-name」オプションだけです。「mdls -name 表示させてい項目 調べたいファイル」とします。
試しに、HTMLファイルのtitle(kMDItemTitle)だけ表示させてみましょう。
PowerBookG4:~ hiro$ mdls -name kMDItemTitle /Users/hiro/Documents/¥~nashorn/index.html /Users/hiro/Documents/~nashorn/index.html ------------- kMDItemTitle = "Hiro's Personal Pages"
複数の項目を表示させたい場合、このように-nameのあとに幾つも書くと、
PowerBookG4:~ hiro$ mdls -name kMDItemTitle kMDItemKeywords /Users/hiro/Documents/¥~nashorn/index.html dex.html kMDItemKeywords ------------- mdls: could not find kMDItemKeywords.
2つめの項目がファイル名だと勘違いして、そんなファイルはねえぞ、と言われてしまいます。
複数の項目を表示させたい場合は、「-name 表示させてい項目」という単位で幾つも書くことになります。
PowerBookG4:~ hiro$ mdls -name kMDItemTitle -name kMDItemKeywords /Users/hiro/Documents/¥~nashorn/index.html /Users/hiro/Documents/~nashorn/index.html ------------- kMDItemKeywords = (Mac, OS, "X,terminal,¥U6e29¥U6cc9") kMDItemTitle = "Hiro's Personal Pages"