求助:mdls未默认显示隐藏文件全部元数据的原因排查
解决mdls默认不显示全部元数据的问题
我之前也碰到过一模一样的问题——明明man page写着mdls默认会列出文件的所有元数据,但实际输出只有一小部分,单独指定字段又能顺利拿到数据。其实这不是工具的bug,是mdls藏了个默认的过滤逻辑。
下面具体说说原因和解决办法:
核心原因
mdls的文档描述确实说默认列出所有元数据,但实际上它会自动过滤掉一些被标记为系统内部使用的元数据字段。这些字段大多是给系统服务用的,对普通用户没什么实际价值,所以工具默认把它们隐藏了,只展示更"实用"的内容。
快速解决方法
要强制显示所有元数据(包括那些系统级的隐藏字段),只需要在命令里加上-all参数:
mdls -all /path/to/your/target/file
执行这个命令后,你就能看到文件的全部元数据了,之前缺失的那些字段都会出来。
额外排查点(如果上面的方法没用)
如果加了-all还是有缺失,那大概率是Spotlight索引出了问题,可以尝试重建索引:
sudo mdutil -E /
这个命令会清空并重新构建根目录的Spotlight索引,等索引完成后再用mdls试试,应该就能拿到完整的元数据了。
内容的提问来源于stack exchange,提问作者avtraino
相关产品推荐
相关产品推荐

