软件工具

Windows 搜文件等三分钟?Everything 配好这几条,检索基本不用等

🦋admin LV1 · 1 次浏览 · 3 条回复

有次要找一个半年前写的技术方案,只记得文件名里有「迁移」两个字。Windows 资源管理器右上角搜了整整三分钟还在转圈,最后出来一堆乱七八糟的 dll 和内容匹配的结果,我要的那个文件还在第 40 条。

换成 Everything 之后,同样一个词,输入完第二个字结果就出来了,总耗时不到一秒。这个差距不是优化出来的,是原理根本不一样。

为什么 Windows 自带搜索这么慢

Windows 搜索的逻辑是:你敲一个词,它去遍历文件,读文件名,还顺带读文件内容,边读边建临时索引。第一次搜某个目录尤其慢,因为它要现扫一遍。你关掉窗口,下次搜它又扫一遍。

Everything 走的是另一条路:它直接读 NTFS 文件系统的 USN 日志(Update Sequence Number Journal)。NTFS 每发生一次文件创建、改名、删除,都会往这个日志里记一笔。Everything 启动时把日志读一遍就能拼出完整的文件列表,之后靠系统通知增量更新,几乎不占资源。

代价也很明确:只支持 NTFS。FAT32 的 U 盘、exFAT 的移动硬盘、网络共享目录,它都读不到日志,那些目录只能退化成慢速遍历(或者干脆不索引)。

第一次装要改的四处设置

装完别急着用,先打开「工具 → 选项」做这几件事,体验差别很大:

1. 装成服务(关键)
在「常规」里勾上「以服务方式运行 Everything」。不装服务的话,它是个普通用户进程,没权限读系统目录和 USN 日志的完整内容,索引会缺一大块。装成服务后开机自启,托盘里那个图标只是个控制面板。

2. 排除掉噪音目录
在「索引 → 排除列表」里加这些:

C:\Windows\WinSxS
C:\$Recycle.Bin
C:\Users\<你>\AppData\Local\Temp
**\node_modules
**\.git
**\__pycache__

node_modules 这条特别重要。一个前端项目能有几万个文件,全索引进来不光拖慢更新,搜「index」的时候会冒出上千条同名垃圾。

实测(一块 1TB 的盘,约 96 万文件):
- 首次建索引:3.2 秒,占内存 88MB
- 排除 node_modules 后:1.9 秒,占内存 61MB
- 日常增量更新:几乎感知不到,CPU 占用长期 0%

3. 开 HTTP 服务器,手机上也能搜
「HTTP 服务器」勾上,设个端口(默认 8081)和密码。之后同一局域网里用手机浏览器打开 http://<电脑IP>:8081,就能远程搜这台电脑的文件。这个功能的用法是:在公司想起家里电脑某个文件在哪,先搜到路径,回家直接找。

4. 只索引 NTFS 卷
在「索引 → 文件夹」里,把 U 盘、光驱这类可移动设备删掉,不然每次插拔都会触发一轮重扫。

搜索语法,记住四条就够日常了

  • 空格 = 与:迁移 方案 找同时含两个词的文件名
  • | = 或:jpg|png|webp 一次找三种格式
  • * 通配:*2026*报告 中间夹什么都行
  • dm:today / dc:thisweek:按修改时间/创建时间过滤,找「最近改过的」比按名字找快得多

还有几个进阶的:

size:>500mb          大于 500MB 的文件
ext:mkv;mp4          多扩展名
regex:^backup_\d{8}  正则,找 backup_20260101 这类
path:Downloads       限定目录
content:关键词       搜文件内容(这个会慢,慎用)

content: 那一条会让 Everything 退化成逐文件读内容,失去速度优势。能用文件名搞定的,别用它。

它跟那些「启动器」不是一类东西

很多人会拿 Everything 跟 Listary、Wox、Flow Launcher 比,其实定位不一样:

| 工具 | 干什么 | 适合谁 |
|---|---|---|
| Everything | 专注文件名检索,快到极致 | 记得名字、想立刻定位 |
| Listary | 在资源管理器里直接唤起搜索 | 正在保存/打开文件的场景 |
| Flow Launcher | 搜文件 + 启动程序 + 算数 + 插件 | 想用一个框干所有事 |
| Windows 搜索 | 文件名 + 内容 | 只想搜文件内容、不在乎速度 |

实际用法是组合:Everything 负责「我知道叫什么,帮我找出来」,Listary 负责「我正在另存为,帮我跳到某个目录」。两者不冲突,而且 Listary 可以直接把搜索引擎设成 Everything。

两个要注意的地方

  • USN 日志有大小限制,默认是 32MB。文件变动极其频繁的话,日志可能被覆盖,导致 Everything 漏掉一部分变更。可以在命令行里调大:fsutil usn setjournal maxsize=268435200 C:
  • 共享目录别乱开权限:HTTP 服务器默认只监听本机,一旦勾了「允许来自网络的连接」,同一 WiFi 下的人都能搜你这台机器的文件名。开就一定要设密码

现在找东西基本是肌肉记忆了:双击托盘图标、敲三四个字、回车、右键打开所在目录,全程两秒。以前那种「我记得有这个文件但就是找不到」的烦躁感,确实少了很多。

你们平时搜文件用什么?有没有哪个场景是 Everything 搞不定、非得搜内容不可的?

回复 (3)

  • 折腾不止 #1

    USN 日志调大这条建议加进正文,很多人根本不知道有这个限制。

    补充一个判断方法:如果 Everything 搜出来的结果偶尔会漏掉刚建的文件,多半就是日志被覆盖了。可以用这个命令看当前日志的使用情况:

    fsutil usn queryjournal C:

    看 Maximum Size 和当前 Usage 的比例,接近就说明快溢出了。调到 256MB 对绝大多数人的盘都够,代价是占用一块磁盘空间而已。

  • 网盘助手 #2

    排除 node_modules 那条我深有同感。我之前不知道能排除,搜个 config.js 出来四百多条,全是各个项目里的依赖,翻到手酸。

    另外补充一个更狠的:.git 目录也建议排掉。一个稍微有点历史的项目,.git/objects 里能有几千上万个文件,全都是哈希命名的碎片,搜出来毫无意义还拖慢索引。

    排除完之后我的索引从 130 万条降到 47 万条,内存从 210MB 掉到 68MB。

  • 老周盘库 #3

    问一下 NAS 上的文件怎么办。

    我的片子和工作文档都存在群晖上,通过 SMB 映射到本地的 Z 盘。Everything 只能索引 NTFS,这种网络驱动器它是完全搜不到的,等于最常用的那批文件反而搜不了。

    有没有什么办法?试过把映射盘加进索引,但它是慢速遍历,每次都要扫十几分钟,而且断开重连之后又要重来。

登录后即可参与讨论

去登录 注册账号

相关帖子