Linux 命令速查
文件管理 man everything

everything

Windows 上基于 NTFS 索引的即时文件名搜索工具(Linux 下需用替代品)

返回

补充说明

everything 通常指 voidtools 开发的 Everything,是 Windows 平台上最著名的文件名搜索工具。它直接读取 NTFS 的主文件表(MFT)建立索引,因此能在毫秒级返回全盘搜索结果,并随文件变化实时更新。

Everything 没有官方 Linux 版本。Windows 的 NTFS 把所有文件记录集中存放在 MFT 中,用户态程序可以直接读取;而 Linux 的 ext4、XFS、Btrfs 都没有这样一份集中且可直接读取的元数据,内核也不提供类似 FindFirstChangeNotification 的全局变更通知,所以无法原样复刻「全盘实时索引」。在 Linux 上只能退而求其次,选择索引式或实时遍历式的工具。

常见的 Linux 替代方案:

  • FSearch:GTK 图形界面,功能与 Everything 最接近,首次启动扫描后即可边输入边出结果,支持正则、通配符和路径过滤。
  • plocate / locate:命令行索引搜索,依赖 updatedb 定时更新数据库,查询几乎瞬时完成,但搜不到上次更新之后新建的文件。
  • fd / fzf:实时遍历目录,不依赖索引,适合在指定目录内快速查找,配合管道和模糊匹配非常灵活。
  • EverythingX(ev):开源复刻项目,用 fanotify 监听文件系统变化(需要 root 和 Linux 5.9+ 内核),提供 everythingxd 守护进程、GUI 和 ev 命令行。
  • Wine:可以用 Wine 运行 Everything 本体,但无法读取 Linux 文件系统索引,实际意义不大。

在 Linux 上搜索文件

# 索引式:先更新数据库,再瞬间查找
sudo updatedb
locate -i -b report.pdf        # -i 忽略大小写,-b 只匹配文件名
plocate '.*\.log$'             # plocate 支持正则

# 实时遍历:按文件名查找
fd -e md -e txt 会议           # 查找 md/txt 文件中名字含「会议」的
fd --hidden --no-ignore config # 包含隐藏文件和被忽略的目录

# 交互式模糊查找
fzf --preview 'bat --color=always {}'

# 图形界面:安装 FSearch 后直接搜索
sudo apt install fsearch

在 Windows 上使用命令行

Everything 附带命令行工具 es.exe(需单独下载 ES),可与 Everything 主程序配合完成脚本化搜索:

es.exe -i -r "\.log$"      # 忽略大小写 + 正则匹配
es.exe -n 20 report        # 最多返回 20 条结果
es.exe -path D:\data *.csv # 只在指定路径下搜索
es.exe -export-csv out.csv # 导出结果为 CSV
es.exe -h                  # 查看全部参数

注意 es.exe 需要 Everything 正在运行(或已建立索引),否则会提示无法连接。

参考链接