mdfind
是 macOS 上的一个命令行工具,它允许用户根据元数据来查找文件。mdfind
使用 Spotlight 索引来快速搜索文件系统中的项目。这意味着它可以非常快地找到文件,因为它不直接在磁盘上搜索,而是查询由 Spotlight 维护的索引数据库。
基本用法
要使用 mdfind
查找文件或文件夹,你可以提供一个搜索字符串,该字符串可以是文件名的一部分、内容关键字或者其他元数据属性。这里是一些基本的例子:
1、搜索文件名为 “Example” 的所有文件:
mdfind 'kMDItemFSName == "Example"*'
2、搜索文件内容包含 “specific text” 的所有文件:
mdfind 'kMDItemTextContent == "specific text"*'
3、搜索特定类型(如 PDF 文件)的所有文件:
mdfind 'kMDItemContentType == "com.adobe.pdf"'
4、搜索创建日期为今天的文件:
mdfind 'kMDItemFSContentChangeDate >= $time.today'
查询关键词
你可以通过 mdfind
的查询关键词来更精确地控制搜索条件。以下是一些常用的关键词和它们的含义:
kMDItemFSName
: 文件系统名称,即文件名。kMDItemTextContent
: 文件的内容文本。kMDItemContentType
: 文件的统一类型标识符 (UTI)。kMDItemAuthors
: 文档作者。kMDItemKeywords
: 关键词。kMDItemFSContentChangeDate
: 内容更改日期。kMDItemFSCreationDate
: 文件创建日期。
实际例子
1、假设你想找到所有名为 “Cham” 的应用程序,你可以这样做:
mdfind 'kMDItemFSName == "Cham*.app"'
2、如果你想查找过去一周内修改过的所有 .txt
文件,你可以使用如下命令:
mdfind -onlyin ~ 'kMDItemFSName == "*.txt" && kMDItemFSCreationDate >= $time.now(-7)'
注意事项
mdfind
依赖于 Spotlight 索引,所以如果 Spotlight 没有索引某些位置或者索引被禁用了,那么mdfind
将无法找到这些位置的文件。- 如果你想要搜索整个文件系统,包括那些可能未被 Spotlight 索引的位置,可以考虑使用
find
命令,不过它的速度会慢很多。 mdfind
是 macOS 中提供的命令,在 Linux 中不适用。
mdfind
是一个强大的工具,适用于需要高效、基于元数据的文件搜索的情况。如果你只是想快速查找文件而不关心其元数据,也可以直接使用简单的文件名匹配:
mdfind "Cham"
这将返回所有与 “Cham” 相关的结果,无论它们是文件名、内容还是其他元数据属性。