Mac OS X:将自定义元数据字段添加到任何文件

AP.*_*AP. 17 macos tagging metadata spotlight

我希望我能够为任何文件设置(并获取)自定义元数据属性.

做这个的最好方式是什么?

谢谢

Lri*_*Lri 16

自定义属性名称适用于我:

$ xattr -w com.apple.metadata:MyAttribute gfdylvyieo a.txt
$ mdls -n MyAttribute a.txt
MyAttribute = "gfdylvyieo"
$ mdfind gfdylvyieo
/private/tmp/a.txt
$ mdfind 'MyAttribute=*'
/private/tmp/a.txt
Run Code Online (Sandbox Code Playgroud)

xattr -wx 如果值是纯文本,则不需要:

xattr -w com.apple.metadata:kMDItemFinderComment aa file.txt
Run Code Online (Sandbox Code Playgroud)

从Finder添加Spotlight注释时,它将作为扩展属性存储在.DS_Store文件中.如果您只是添加扩展属性,则Spotder注释字段在Finder中显示为空白,但注释元数据仍由Spotlight编制索引.


Ned*_*ily 11

OpenMeta框架是添加元数据使用扩展属性OS X文件事实上的第三方标准.它被许多第三方应用程序使用.


Gor*_*son 9

这听起来像是扩展属性的工作.您可以使用xattr从命令行获取和设置它们,也可以使用getxattrsetxattr从程序中设置它们.

但是,扩展属性(至少通常)不会被Spotlight索引.我所知道的唯一例外是"com.apple.metadata:kMDItemFinderComment"属性,该属性应包含带有实际可索引注释的二进制格式plist(请参阅@ PurplePilot的答案). 这个页面声称聚光灯将索引其他以"com.apple.metadata:"为前缀的xattrs,但我还没有让它工作.


And*_*tas 6

如果您想以编程方式设置文件的“查找器注释”(请参阅​​@PurplePilot 的回答),请尝试以下操作:

1) 使用您的评论创建一个常规的 xml plist 文件:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>My Custom Comment</string>
</plist>
Run Code Online (Sandbox Code Playgroud)

2) 将 plist 转换为可接受的二进制格式:

plutil -convert binary1 my_custom_comment.plist
Run Code Online (Sandbox Code Playgroud)

3) 使用xattr,设置 kMDItemFinderComment 元数据:

xattr -wx "com.apple.metadata:kMDItemFinderComment" "`xxd -ps my_custom_comment.plist`" MyFile
Run Code Online (Sandbox Code Playgroud)

您可以看到xattr -l MyFile注释在那里并且以正确的二进制格式显示,但由于某种原因,Finder 没有在“注释”列中显示它(至少对我而言)。

搜索聚光灯数据库mdfind "My Custom Comment"将返回带有此注释的所有文件。