我希望能够为任何文件设置(和获取)自定义元数据属性。
做这个的最好方式是什么?
谢谢
自定义属性名称对我有用:
$ 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
xattr -wx
如果值为纯文本,则不需要:
xattr -w com.apple.metadata:kMDItemFinderComment aa file.txt
当您从 Finder 添加 Spotlight 评论时,它既作为扩展属性存储,也存储在 .DS_Store 文件中。如果您只是添加扩展属性,则 Spotlight 评论字段在 Finder 中显示为空白,但评论元数据仍由 Spotlight 编制索引。
OpenMeta框架是事实上的第三方标准,用于使用扩展属性将元数据添加到 OS X 文件。它被许多第三方应用程序使用。
这听起来像是扩展属性的工作。您可以使用xattr从命令行获取和设置它们,也可以使用getxattr和setxattr从程序中获取和设置它们。
但是,扩展属性(至少通常)不被 Spotlight 索引。我知道的唯一例外是“com.apple.metadata:kMDItemFinderComment”属性,它应该包含一个带有实际可索引注释的二进制格式 plist(参见@PurplePilot 的答案)。 该页面声称聚光灯将索引以“com.apple.metadata:”为前缀的其他xattrs,但我还没有让它工作。
如果您想以编程方式设置文件的“Finder 注释”(请参阅@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>
2) 将 plist 转换为可接受的二进制格式:
plutil -convert binary1 my_custom_comment.plist
3) 使用xattr
,设置 kMDItemFinderComment 元数据:
xattr -wx "com.apple.metadata:kMDItemFinderComment" "`xxd -ps my_custom_comment.plist`" MyFile
您可以看到xattr -l MyFile
评论存在并且采用正确的二进制格式,但由于某种原因,Finder 没有在“评论”列中显示(至少对我而言)。
搜索 Spotlight 数据库mdfind "My Custom Comment"
将返回带有此注释的所有文件。
在查找器中选择文件时,右键单击和信息,或 cmd + i 将打开一个信息面板,您可以在顶部添加将在 Spotlight 中引用的数据。称为 Spotlight 评论。您也可以对目录执行此操作。我不确定这是否是最好的方法,但这是我知道的唯一方法。