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

Posted

技术标签:

【中文标题】Mac OS X:向任何文件添加自定义元数据字段【英文标题】:Mac OS X : add a custom meta data field to any file 【发布时间】:2012-01-21 18:46:55 【问题描述】:

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

最好的方法是什么?

谢谢

【问题讨论】:

您希望 Spotlight 如何与之交互? 【参考方案1】:

自定义属性名称对我有用:

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

【讨论】:

这在 Catalina 10.15.4 (19E287) 上似乎也可以正常工作。 当添加com.apple.metadata:kMDItemFinderComment 字段和xattr 时,如上所述,评论在“常规”信息部分(查找器-> 获取信息)中显示为单独的“评论”元标记。所以这与 Finder 兼容并且它被 Spotlight 索引。 (High Sierra) 谢谢你,解决了我标记批次的问题。 快速链接到可用的扩展属性列表,字段。 Apple Developers - Meta Attributes, available keys【参考方案2】:

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

【讨论】:

+1 虽然,作为旁注,似乎at least one application that previously supported OpenMeta will (on Mavericks) no longer find files that use OpenMeta tags alone。 有这方面的文档吗?【参考方案3】:

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

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

【讨论】:

感谢您的回答。有没有办法获取所有具有特定属性的文件? 如果您可以让 Spotlight 索引 xattr 条目,您应该能够使用它来查找具有特定 xattr 的文件。如果没有,我认为您必须遍历整个文件系统,并使用 getxattr 检查每个文件的元数据。【参考方案4】:

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

1) 使用您的 cmets 创建一个常规的 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 看到 cmets 存在且采用正确的二进制格式,但由于某种原因 Finder 未在“评论”列中显示(至少对我而言)。

使用 mdfind "My Custom Comment" 搜索 Spotlight 数据库将返回所有带有此注释的文件。

【讨论】:

【参考方案5】:

在查找器中选择文件时,右键单击和信息,或 cmd + i 将打开一个信息面板,您可以在顶部添加将在 Spotlight 中引用的数据。称为 Spotlight 评论。您也可以对目录执行此操作。我不确定这是否是最好的方法,但这是我知道的唯一方法。

【讨论】:

也必须有一个工具来以编程方式执行此操作。 我假设您可以通过 applescript 和/或 automator 进行操作。快速浏览了 automator,并且有很多针对文件夹和文件的预构建操作,所以假设它是非常可行的

以上是关于Mac OS X:向任何文件添加自定义元数据字段的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch 7.x mapping 定义说明

将自定义结帐字段(用户输入)添加到订单数据和用户元数据

如何在 Yammer 组上添加自定义托管元数据

是否可以将自定义元数据标签添加到音乐文件?

php Real Homes:添加属性自定义元字段

在 AJAX 后置过滤器中添加多个元键和值