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

问题描述:

我希望能够为任何文件设置(并获取)自定义元数据属性。Mac OS X:将自定义元数据字段添加到任何文件

这样做的最好方法是什么?

感谢

+0

您希望Spotlight如何与之交互? – Thilo 2011-12-16 07:06:35

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

右键点击信息,或CMD +我当文件在取景器会打开一个信息面板中选择,你可以在任何能在Spotlight中引用顶部添加数据。被称为Spotlight评论。你也可以用目录来做到这一点。我不确定这是否是最好的方法,但这是我知道这样做的唯一方法。

+0

必须有一个工具才能以编程方式执行此操作。 – Thilo 2011-12-16 07:10:32

+0

我假设你可以从applescript和/或automator中完成它。快速浏览一下automator,并且对文件夹和文件有一些预先构建的操作,所以假设它是相当有用的 – PurplePilot 2011-12-16 10:58:32

这听起来像是扩展属性的工作。您可以通过xattr以及getxattrsetxattr的程序从命令行获取并设置它们。

但是,扩展属性(至少通常)不由Spotlight编入索引。我知道的唯一例外是“com.apple.metadata:kMDItemFinderComment”属性,它应该包含一个带有实际可索引评论的二进制格式plist(请参阅@ PurplePilot的回答)。 This page声称聚光灯将索引以“com.apple.metadata:”为前缀的其他xattrs,但我没有得到它的工作。

+0

感谢您的回答。有没有办法让所有的文件具有特定的属性? – 2011-12-16 12:36:48

如果你想以编程方式设置一个文件的 “搜索注释”(见@ 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看到的评论在那里,在正确的二进制格式,但由于某种原因查找不注释列显示它(至少对我来说)。

使用mdfind "My Custom Comment"对照聚光灯数据库搜索将返回包含此注释的所有文件。

自定义属性名称为我工作:

$ 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索引。