如何在文件夹中递归搜索所有文件元数据中的指定关键词?
macOS递归搜索元数据含指定关键词的文件
基础实现命令
用find递归遍历文件,结合mdls和grep筛选匹配元数据的文件,输出文件名:
find /你的搜索路径 -type f -exec sh -c 'mdls "$1" | grep -qi "目标关键词" && echo "$1"' sh {} \;
命令各部分说明
find /你的搜索路径:指定起始搜索目录,会递归遍历所有子目录-type f:仅处理普通文件,跳过目录、链接等非文件类型-exec sh -c '...' sh {} \;:对每个找到的文件执行后续shell逻辑mdls "$1":获取当前文件的完整元数据grep -qi "目标关键词":-q静默匹配只返回结果状态,-i忽略大小写,确保匹配"John"或"john"都生效&& echo "$1":只有元数据匹配关键词时,才输出当前文件的完整路径
实用示例
- 搜索
~/Documents目录下,元数据含"john"的所有文件:
find ~/Documents -type f -exec sh -c 'mdls "$1" | grep -qi "john" && echo "$1"' sh {} \;
- 匹配多个关键词(比如"john"或"doe"):
find ~/Documents -type f -exec sh -c 'mdls "$1" | grep -qiE "john|doe" && echo "$1"' sh {} \;
- 精准匹配特定元数据字段(比如仅检查作者字段
kMDItemAuthors):
避免其他字段含关键词导致误匹配,只看作者信息:
find ~/Documents -type f -exec sh -c 'mdls -name kMDItemAuthors "$1" | grep -qi "john" && echo "$1"' sh {} \;
内容的提问来源于stack exchange,提问作者user2989759
相关产品推荐
相关产品推荐

