nas 上存放了很多文件,如果需要根据名称模糊搜索某个文件要全盘扫描,慢而且感觉对磁盘不友好。所以 Linux 平台有没有类似工具,如果没有可不可以通过 inotify 或者其它什么 api 等自己写一个工具,不太了解 linux 文件系统
1
liprais 2022-05-21 00:07:18 +08:00
有没有一种可能是跟 ntfs 这种微软专利的文件系统有关系呢
|
2
devour 2022-05-21 00:10:55 +08:00
locate?
|
3
2NUT 2022-05-21 00:11:44 +08:00
locate 会查找文件名数据库, 好像使用的 树 结构;
不清楚 everything 的原理 |
4
weyou 2022-05-21 00:13:04 +08:00 via Android 1
locate 还不够快么
|
5
2NUT 2022-05-21 00:31:16 +08:00 2
Everything 直接扫描 MFT ,这将 Everything 限制为仅 NTFS 卷。
一切都制作了这个 mft 的一个非常简单的副本并将其保存在内存中,使用 USN 更改日志来监视更改。 搜索被编译成字节码并被执行。 |
6
reorx 2022-05-21 01:22:11 +08:00
最近 https://www.v2ex.com/t/853610 发布了一个跨平台的文件搜索工具,也支持 Linux
|
7
Buges 2022-05-21 03:06:33 +08:00 via Android 1
有一个高仿 everything ,体验接近的 Linux 实现 https://github.com/cboxdoerfer/fsearch 不过带 GUI ,目前还没有 headless 版本。
还有 rlocate https://github.com/Wazzaps/rlocate rust 实现的 locate 命令,性能极大提升。 另外除非你文件真的非常多,不然可能不需要索引,直接用 fd https://github.com/sharkdp/fd#benchmark 就足够了,基于深度优化、支持 simd 的 regex ,性能远远强过 GNU find 。只读并不会影响磁盘寿命(除非你磁盘休眠了需要唤醒),另外如果文件非常多的话索引体积也不小。 |
8
wwlearnbc 2022-05-21 12:27:55 +08:00 via iPhone
catfish 或者 fzf
|
9
jessun1990 2022-05-21 13:49:44 +08:00
@Buges 感谢推荐,我也顺带试试。
|
10
mmdsun 2022-05-21 15:16:36 +08:00 via iPhone
Everything 是读取 NTFS 下的 USN Journal ,速度才有这么快的。
不过我用 Win 系统自己搜索多,系统自带可以设置搜索文件里的内容,全局搜代码不错。 |
11
pkwenda 2022-05-23 10:13:09 +08:00
|
12
fwindcore 2022-05-23 15:18:32 +08:00
|