Mac 上的搜索入口不止一个:Finder、⌘Space 唤起的 Spotlight、终端的 mdfind 与 find,以及按文件名工作的 macEverything。先分清索引来源和搜索对象,再决定用哪个。

Finder 搜索

在 Finder 窗口按 ⌘F,或点工具栏的搜索框即可开始。Finder 的搜索范围可配置,默认是「这台 Mac」;可在搜索栏的范围栏收窄到当前文件夹,或在「访达 → 设置 → 高级」中修改默认范围。优势是就地操作:结果可直接预览、打开、拖拽,不必离开文件管理器。

输入关键词后,可用搜索建议,或点「+」按种类、修改日期、名称筛选。Finder 的文件名与内容搜索通常依赖 Spotlight 索引:内容命中需要对应导入器,扫描版 PDF 没有文字层,即使被索引也可能搜不到正文;目录若在 Spotlight 隐私列表中,「这台 Mac」搜索也会漏掉它。

适合:知道文件大致在哪个项目或目录,想边看边缩小范围,或用 Quick Look 确认内容。

Spotlight(⌘Space)

Spotlight 是 macOS 的系统索引,默认用 ⌘Space 唤起。应用、文件名、元数据,以及邮件、日历、备忘录和文档正文都在同一套索引里,也能进入设置与常用操作。记得内容却不知道文件在哪时,它比文件名工具更合适。

索引由系统维护,导入器和排除规则决定什么能进来。可在「系统设置」→「聚焦」调整搜索类别与隐私列表;索引异常时用 mdutil 检查。mdfind 查询同一份索引,同样受导入器与排除规则约束;Spotlight 界面的结果类别开关只影响显示。若界面搜不到,先检查排除和索引状态,更多排查见 Spotlight 搜不到文件。

终端:mdfind 与 find

mdfind 查询 Spotlight 索引,适合已索引的文件名、元数据和正文;find 不读索引,直接遍历指定路径,更适合 Spotlight 排除目录或索引范围外的位置。

mdfind -name "report"
mdfind -onlyin ~/Documents "预算"
mdfind "kMDItemFSName == '*.pdf'c"
find ~/Projects -type f -name "*.ts"

-name 只匹配文件名,-onlyin 限定目录,谓词可组合元数据条件,末尾的 c 表示忽略大小写。find 的 -name 区分大小写,-iname 忽略大小写,-type f 只返回普通文件。它默认会进入 .git、node_modules 和隐藏目录,在大目录上会明显变慢,可用 -prune 跳过。

mdfind 只返回已索引的内容,快但不会比索引更完整;find 更全,代价是每次真正走目录。两者都能配合 xargs 或循环写脚本。

macEverything

macEverything 是 macOS 文件名搜索工具。首次启动时会为主文件夹与 /Applications 建立本地索引,只按文件名匹配。默认排除 ~/Library、node_modules 与 .git:它们聚集了缓存、依赖和版本历史,逐文件收录只会让结果变吵。

索引保存在本地,查询不联网;FSEvents 负责增量更新。⌥Space 打开悬浮搜索条,输入即搜,↑/↓ 选择后回车;⌥⇧F 打开完整结果窗口,可按大小或修改时间排序、多选;空格快速查看,右键可拷贝文件、路径或文件名。随包的命令行读取同一份索引:

macEverything query "报价单"
macEverything status

完全磁盘访问权限可选。未授权时,状态栏会显示缺口数量,点开可查看目录,而不是静默漏掉;授权后需重启引擎(macEverything stop && macEverything start),只重开应用不够。CLI 需在 PATH 中,或调用 App 包内的 Contents/MacOS/macEverything。

限制明确:不索引外置盘和网络盘;支持通配符、路径与整词,不支持正则。范围与限制见 Mac 版 Everything。

在 Apple M5、约 128 万条目的测试集上,首次扫描 100 万个文件约需 1.0–1.6 秒,查询 P99 为 2.9–3.6 毫秒,变化后 0.3 秒内可搜到;界面常驻内存约 136 MB。

它并非 Spotlight 替代品:Spotlight 搜正文、邮件和系统动作,macEverything 只解决「知道文件名,想知道它在哪」。两者可并存。

对比表

四种方式放在一起看,差异主要在索引来源与搜索对象。

Finder、Spotlight、mdfind/find 与 macEverything 的搜索能力对比
方式范围速度语法排除规则隐私
Finder「这台 Mac」(可收窄到当前文件夹);内容搜索依赖 Spotlight 元数据取决于索引与范围;已索引结果通常很快关键词加搜索建议与筛选条件跟随 Spotlight 隐私设置;受保护位置可能不可读本机查询,使用系统 Spotlight 索引
Spotlight所有已索引的本地卷;文件名、元数据、邮件、日历、备忘录和部分正文已索引内容通常即时返回;正文取决于导入器关键词与类别过滤;终端可用 mdfind 写谓词Spotlight 隐私、.noindex、.metadata_never_index、未索引或关闭索引的卷索引在本机;若开启「聚焦建议」,部分查询可能发送给 Apple,可关闭
mdfind / findmdfind 查系统索引;find 遍历指定路径,只受读取权限限制mdfind 走索引,很快;find 依目录与磁盘而定,可能较慢命令行;mdfind 支持 -name、-onlyin 与谓词,find 使用表达式mdfind 受 Spotlight 排除约束;find 默认无排除,会进入 node_modules、.git只在本机执行;mdfind 结果来自本地系统索引
macEverything主文件夹与 /Applications;仅文件名,不含外置盘/网络盘M5、约 128 万条目:首次扫描 1.0–1.6 秒,查询 P99 2.9–3.6 毫秒,变更 0.3 秒内可搜通配符、路径与整词;不支持正则表达式默认排除 ~/Library、node_modules、.git;范围固定索引保存在本地,查询不联网

按场景选择

找文件位置。文件就在当前项目里,用 Finder 把范围收窄到当前文件夹最省事;只记得文件名、不确定位置,用 ⌥Space 调出 macEverything;目标可能在主文件夹与 /Applications 之外(macEverything 的索引范围之外),再考虑 Spotlight 或 find。

找内容。记得一句话、一个主题或邮件里的信息,用 Spotlight;要把结果写进脚本,用 mdfind。Finder 的内容搜索也依赖索引质量。

脚本自动化。mdfind 适合系统索引已覆盖的场景,输出一行一个路径;find 适合确定性遍历、不受 Spotlight 排除影响的任务,代价是更慢;macEverything query 适合本地文件名索引。

搜索 Spotlight 排除目录。mdfind 和 Spotlight 都进不去,用 find 遍历(前提是有读取权限),或在 Finder 中打开目录。macEverything 只覆盖主文件夹与 /Applications,且有排除项,不能当作任意目录的索引器。

快速上手

下载 DMG(6.9 MB),拖进「应用程序」即可,需 macOS 13+ 与 Apple 芯片;首次启动会在后台建立索引。⌥Space 唤起悬浮条,输入即搜;⌥⇧F 打开结果窗口。索引保存在本机,删除索引不影响原文件。