nas 上存放了很多文件,如果需要根据名称模糊搜索某个文件要全盘扫描,慢而且感觉对磁盘不友好。所以 Linux 平台有没有类似工具,如果没有可不可以通过 inotify 或者其它什么 api 等自己写一个工具,不太了解 linux 文件系统
![]() | 1 F281M6Dh8DXpD1g2 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 ![]() locate 还不够快么 |
![]() | 5 2NUT 2022-05-21 00:31:16 +08:00 ![]() Everything 直接扫描 MFT ,这将 Everything 限制为仅 NTFS 卷。 一切都制作了这个 mft 的一个非常简单的副本并将其保存在内存中,使用 USN 更改日志来监视更改。 搜索被编译成字节码并被执行。 |
![]() | 7 Buges 2022-05-21 03:06:33 +08:00 via Android ![]() 有一个高仿 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 系统自己搜索多,系统自带可以设置搜索文件里的内容,全局搜代码不错。 |
12 fwindcore 2022-05-23 15:18:32 +08:00 |