【コラム】

OS X ハッキング!

133 虎飼い日記 その1 - 噂のSpotlightをTerminalで使う

    海上忍  [2005/05/09]

    新しいiMac G5が出ましたね。ハードウェア的にはマイナーチェンジという内容ですが、AirMac ExtremeカードとBluetoothモジュールが全機種標準装備という点はベリーグッド。Tigerがプリインストールされているだけに、GW直前に前モデルを購入したユーザには心の傷が残るかも……トラ…ウマく落とせなくてすいません。

    さて、今回はTigerネタの1回目として「Spotlight関連コマンド」を取りあげたい。特集でも紹介したように、Spotlightはただの検索ツールにあらず、ファイルの扱い方そのものを変えてしまうほどの可能性を秘めた技術なのだ。そのSpotlightをTerminalから使ってみたい。

    チェックするなら「mdimport」

    Spotlightは、基本的にメンテナンスの必要がない。ユーザができることといえば、システム環境設定の「Spotlight」パネルを利用し、検索から除外する領域(プライバシー領域)を定義したりショートカットキーを変更したりする程度。検索に用いられるインデックスファイルは、ファイルに変更が加えられるたびカーネルの通知により自動更新されるので、メンテナンスを意識する必要すらない。

    検索の対象としてインデックスファイルに情報がストアされるファイルは、Soptlightプラグインによって決定される。プラグインは"/System/Library/Spotlight"と"/Library/Spotlight"ディレクトリのほか、アプリケーションの内部(バンドル)に保存され、必要に応じてSpotlightのエンジンに呼び出される仕組みだ。Terminalで「mdimport -L」を実行すれば、現在有効なプラグインを一覧できる。

    Terminalで「mdimport -L」を実行すれば、現在有効なプラグインを一覧できる

    メタデータを調べるには「mdls」

    Spotlightでは、個々のファイルが持つ付属情報(メタデータ)をデータベース化したものをインデックスファイルに保存している。現在のところ、GUIベースのツールは用意されていないため、ファイルがどのようなメタデータを持つかの確認は「mdls」コマンドを利用することになる。目的のファイルのパスを引数として与えれば、「kMD***** = %%%」という属性情報がズラズラと表示されるはずだ。

    PDFファイルに「mdls」コマンドを発行してみた結果

    メタデータに記録される属性情報はプラグインによって決定されるが、システム標準のものについてはAppleがリファレンスを作成しているので、それを参考にするといいだろう。

    Finderでスマートフォルダを作成するとき、検索条件欄で「その他...」を選択する方法もある。現在有効な(「mdimport -L」で表示される)プラグインが使用する属性情報が、説明文付きで一覧表示されるので、詳細な検索を行うときに役立つはずだ。

    もうfindはいらない!?「mdfind」

    mdlsコマンドでメタデータの内容を調べていると、リファレンスに掲載されていない属性名も少なくない。どのような役割を持つかは、その名称からある程度推測はつくものの、情報が少ない現状では手探りにならざるを得ないだろう。

    筆者が目を付けたのは、「kMDItemFSFinderFlags」という属性情報。どうやら、カスタムアイコン付きのファイル/フォルダには「1024」が適用されるらしく、iPhotoで保存したJPEGファイルにも軒並み「kMDItemFSFinderFlags = 1024」が設定されている。iPhotoはともかく、Preview.appのようにサムネイル画像を作成しないアプリケーションは少なくないので、画像フォーマットとサムネイルの有無を条件にSpotlight検索できれば便利に使えるはず。

    そこで考えたのが、以下に示すコマンドライン。「サムネイル画像がなく、かつPNGフォーマットのファイル」という条件のもと、mdfindコマンドでSpotlight検索しようという算段だ。検索結果からファイルパスを抜き出し、「sips -i」コマンドでサムネイルを追加する内容のシェルスクリプトを作成すれば、一括処理にも対応できることだろう。

    $ mdfind 'kMDItemFSFinderFlags == 0 && kMDItemContentTypeTree == public.png'

    と、紙幅が尽きてしまったため今回はここまで。次回は、mdutilコマンドの用法を絡めつつ、Spotlightで外部ボリュームを扱うときのテクニックなどを紹介する予定だ。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン