web-dev-qa-db-ja.com

MavericksのFinderはどのようにタグを保存しますか?

私はまだマーベリックスを使っていません。
Finderはタグをファイル自体(例:xmp)に保存しますか、それともある種のデータベースを利用していますか?または何?

13
Kevin Grace

Mavericksはタグを拡張属性として保存します

NDAが解除されました:Mavericksはタグを拡張属性としてcom.Apple.metadata:_kMDItemUserTagsに保存します。次のような mdls コマンドを使用して、自分で確認できます。

mdls -namekMDItemUserTagsこんにちは

John SiracusaによるOS X 10.9の壮大なレビュー タグアーキテクチャについて説明 の詳細。

12
Dan

タグは、com.Apple.metadata:_kMDItemUserTagsという名前の拡張属性に格納されます。その値は、文字列の単一の配列を含むバイナリプロパティリストです。

_$ xattr -p com.Apple.metadata:_kMDItemUserTags file3|xxd -r -p|plutil -convert xml1 - -o -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>aa</string>
    <string>Orange
7</string>
    <string>Yellow
5</string>
    <string>Green
2</string>
    <string>Blue
4</string>
    <string>Purple
3</string>
    <string>Gray
1</string>
</array>
</plist>
_

色のタグには、_Red\n6_(_\n_は改行)のような値があります。

Xattrを使用して、ファイル間でタグをコピーできます。

_xattr -wx com.Apple.metadata:_kMDItemUserTags "$(xattr -px com.Apple.metadata:_kMDItemUserTags file1)" file2
xattr -wx com.Apple.FinderInfo "$(xattr -px com.Apple.FinderInfo file1)" file2
_

Com.Apple.FinderInfoのkColorフラグが設定されていない場合、Finderはファイルの横に色の円を表示しません。 kColorフラグがオレンジに設定されていて、ファイルに赤いタグが付いている場合、Finderは赤とオレンジの両方の円を表示します。 AppleScriptでkColorフラグを設定できます。

_xattr -w com.Apple.metadata:_kMDItemUserTags '("Red\n6","new tag")' ~/desktop/file4"
osascript -e 'tell application "Finder" to set label index of file "file4" of desktop to item 1 of {2, 1, 3, 6, 4, 5, 7}'
_

'("Red\n6","new tag")'は、このための古いスタイルのplist構文です。

_<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>new tag</string>
</array>
</plist>
_

_xattr -p com.Apple.FinderInfo file|head -n1|cut -c28-29_は、kColorフラグに使用されるビットの値を出力します。赤はC、オレンジはE、黄色はA、緑は4、青は8、マゼンタは6、灰色は2です。値に1を追加するフラグは、OSXでは使用されません。

1
Lri

私がインターネットで読むことができる限り、いくつかの情報源から、マーベリックスはタグ情報をOpenMeta戦略に非常に近いものとしてファイル自体に保存する可能性が非常に高いです。今まではすでにタグがあり、たとえばLeap/Yepのように、これを支援するいくつかのアプリケーションがありました。しかし、これは標準の下位層であるOpenMetaの上に統合されたベストプラクティスにすぎませんでした。 Mavericksは、タグ(およびファイルシステムでのエンコード方法)を公式にするためのステップをさらに進めたいと考えています。プラスタグには固定の色セット(7?)があり、これはタグをセットに分割して余分なセマンティックを運ぶのに役立ちます。私たちの多くは、これが最終的に将来の選択を推進する大きな業界リーダーのファイルシステムビジョンにおける大きな前進であると考えています(アプリケーションはこれに大きく依存し、おそらくMac OS自体が特別なシステム全体の注釈を期待するでしょう)。詳細のために、OpenMetaは、メタデータをファイルのxattr(拡張属性)として記述し、ファイルシステム自体がその範囲外であるために気にしないものにすることを望んでいます。

質問は実際にはかなり古く、マーベリックスはすぐにGMになります。.ベータドメインに関連する情報しかないという事実にもかかわらず、私が上で述べたすべてはかなり真実です。いくつかあります。このトピックについてインターネット上で行われている議論、特に1つはここにあります:

https://groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ

最も興味深い部分は次のとおりです。

Appleタグは、OpenMetaタグと同じ方法で実装されます-ファイルシステム内のファイルに添付された拡張属性として。唯一の違いは、属性名がkMDItemOMUserTagsではなく_kMDItemUserTagsであるということです( "後者のタグの「OM」は「OpenMeta」用です。MavericksタグとOpenMetaタグの両方のタグデータはプロパティリストですが、plistの内部形式を調べていなかったため、それらがそうであるかどうかはわかりません。まったく同じかどうか。HFS+以外のディスク形式に補助ストレージや代替方法が使用されているかどうかもわかりません。Appleの誇大宣伝では、iCloud上のファイルにもタグを付けることができると言われているので、問題が発生する可能性があります。そこ。

ただし、長所と短所は、少なくともローカルMacディスクでは、Maverickがネイティブに表示するには、OpenMetaタグデータを新しい_kMDItemUserTags属性に移行する必要があるということです。大したことではありませんが、誰かがそれを行うユーティリティを書く必要があります。

1
Diego