Everything 是 voidtools 出品的 Windows 文件搜索神器,它要比大多数本地搜索工具要快,是因为它用到了 NTFS 文件系统的日志信息来更新索引。这是它的优点,但也导致了它无法适用于非 NTFS 文件系统,同时也无法应用于类似CD、U盘等等介质内容索引。
为了摆脱掉基于NTFS特性的依赖,Everything 还支持另外一种模式,即基于文件索引。提前对文件系统进行扫描生成一个文件索引文件,搜索时使用索引文件进行搜索。文件索引的适用范围更广,但缺点是更新不及时,并且在文件内容变化比较大时需要重新生成。虽然存在缺点,但极广的适用性还是值得我们研究一下,我们看下文件索引怎么用。
Everything 默认会对所有驱动器进行索引,有时我们只想在指定范围内搜索,当需要限定范围时文件索引就能派上用场。在 Everything 的工具菜单下有一个文件列表编辑器,可以打开一个空的文件列表。
打开文件列表编辑器后,是一个空的列表,将文件夹拖入即可生成一个文件列表索引。
生成的文件列表索引可以保存为索引文件,索引文件后缀为*.efu,文件格式实际上是个csv格式,字段以逗号分隔,分别存有文件路径,大小,日期等属性。
索引文件可以使用 Everything 软件打开,打开后只显示索引内容,类似于限制搜索范围了。
文件列表编辑器可以索引内容进行维护,比如增加目录或删除部分内容。通过 Everything 打开文件索引文件,则可以对索引内容进行搜索,同时也支持对文件大小进行排序。
除了使用文件列表编辑器生成索引,Everything 还支持命令行方式创建索引:
everything.exe -create-file-list files.efu c:
命令的执行没有输出,并且是异步执行的,当执行完成后会在指定目录生成索引文件。这种方式比较低效,Github上有一个项目可以高效生成兼容的 efu 索引文件,并且可以对索引文件进行更新。项目地址:
- https://github.com/zybexXL/EFUtool
生成索引的命令类似,比 everything 好一点的是它自带进度输出,支持接多个目标路径。
EFUtool.exe index.efu "c:" "d:" "e:"
当不接目标路径时,EFUtool 会根据索引文件中的路径对其下的目录进行更新,这一点要比 everything 的索引列表生成功能要强大。通过定时调用 EFUtool 可以保证文件索引处于最新状态。
Linux 下类似 Everything 的工具叫 FSearch,它的github项目地址为:
-
https://github.com/cboxdoerfer/fsearch
项目中的示例截图如下:
如果以上工具都不想用,还有一种很原始的方式来创建文件索引。使用 linux 或 WSL 下的 find 来创建文件索引。提前创建文件索引,总比当需要时慢慢搜索文件系统要强。可以基于索引文件来搜索文件,一个索引文件配合 grep 命令可以解决大部分简单的搜索任务。
type f | tee c_index.log find /c -
"*.mp3$" c_index.log grep -iE
全文完。
评论