FAQ

FAQ:macOS(Finder)标签机制与本应用的实现说明

1. macOS 的标签(Finder Tags)是什么?存在哪里?

Finder 标签属于文件的元数据,不写入文件内容本身,而是写在文件的扩展属性(xattr)里,主要键名是:

其内容是一个二进制 plist,本质上是“标签数组”。每个标签元素包含标签名颜色编号,颜色编号范围 0–7(0 无色,1 灰,2 绿,3 紫,4 蓝,5 黄,6 红,7 橙)。

因此:


2. 关于旧扩展属性 com.apple.FinderInfo

com.apple.FinderInfo 是较早期 macOS/Finder 的机制之一:

更具体地说:


3. 多语言问题:为什么同一个颜色在不同语言系统会变成“不同标签”?

macOS 写入的是本地化后的标签名称字符串

它们在系统看来是两个不同标签。 本应用通过系统 API 获取默认颜色标签名称,因此返回结果会受系统语言环境影响(“系统设置 → 通用 → 语言与地区 / 界面语言”,选择“自动”时跟随当前系统语言)。如果系统语言与应用语言不一致,就可能出现标签名称不一致。


4. 为什么应用设置中要和 Finder 的标签配置保持一致?


5. 标签元数据在不同磁盘/网络位置如何保存?(APFS / AppleDouble / NTFS ADS)

5.1 APFS(本机磁盘)——原生保存 xattr(最可靠)

APFS 原生支持扩展属性,标签元数据直接保存在文件自身的 xattr 中。

5.2 不支持/不完整支持 xattr 的位置——AppleDouble(._原文件名

当目标文件系统或协议无法可靠保存 xattr(常见于 FAT32、exFAT、网络驱动器:SMB/WebDAV/NFS 等),macOS 会把元数据存到 AppleDouble 伴随文件:

可见性:

重要提示(标签“丢失”的常见原因):

5.3 SMB 连接 NTFS:可能使用 ADS(可选数据流)

当通过 SMB 访问 NTFS 且满足服务端/协议配置条件时,macOS 可能不生成 ._ 文件,而是把元数据写入 NTFS 的 ADS(Alternate Data Streams,可选数据流)

但注意:


6. 如何查看文件的标签 xattr?

命令行 xattr 不方便:它不支持处理/显示 com.apple.metadata:_kMDItemUserTags 这类二进制 plist属性,必须使用 -px 选项以十六进制方式才能正确输出。

建议使用第三方工具:


7. Spotlight 与标签是什么关系?标签是否依赖 Spotlight?


8. 本应用的“增强索引”做了什么?

当 Spotlight 无法覆盖(外置盘/网络盘/隐私排除目录等)时,本应用提供增强索引: