在 Windows 上有一个很好的文件搜索引擎,叫做一切,它(不像find
)非常快并且(不像locate
)总是返回最新的结果。 AFAIK 它的工作原理是从 NTFS 日志填充数据库(它不适用于其他文件系统)。
我想知道Linux(ext3或ext4)是否有类似的东西(我不关心GUI;我的观点是速度和最新的保证);我用谷歌搜索但什么也没找到。这样的事情可以做吗?甚至有人在做吗?
答案1
你可以看看重新定位,locate 的重新实现,始终保持最新。另一个有趣的项目是回忆起来这也支持实时索引并允许您(像小猎犬一样)另外进行全文搜索。最后我要提一下涂鸦它还支持实时索引。对于涂鸦,有一些不错的前端,例如鲶鱼。
请注意,您还可以通过使用 urxvt 作为终端模拟器并编写类似的内容来使 (r)locate 结果可点击
URxvt.perl-ext: default,matcher URxvt.urlLauncher: /usr/bin/gnome-open
URxvt.matcher.button: 1 URxvt.matcher.pattern.1: /.*
(xrdb -load ~/.Xdefaults
然后执行)
答案2
我也在寻找Linux的“Search Everything”工具并发现《寻找猴子》在 Ubuntu 存储库中。爱它!
它重量轻,加载速度快,通配符搜索可以立即产生大量结果,此外它还具有过滤器和高级搜索方法。
现在,我的 Linux 版“Everything”搜索工具又回来了!
答案3
在文件系统中实现这一点是一个有趣的想法,但据我所知,不存在类似的想法。除了一些试图将自己深入到上层 fs 层以尽早掌握数据的附加组件(更新:一切都属于这个类别本身)之外,恐怕您仅限于不太令人满意的过程定期索引。
最接近您正在寻找的可能是 libferris 虚拟文件系统。
- 阿布尔·利弗里斯
- 2005年论文
- Linux期刊文章 世界是一个 libferris 文件系统
- Linux期刊文章 使用 libferris 进行文件系统索引
- 一切都是虚拟文件系统:libferris(pdf)
在索引世界中,您可能想看看一瞥,它至少能够更新和附加其索引。
更新:我刚刚读了关于“Everything”的内容,它似乎也不是 FS 固有的,所以 libferris 并不遥远,而且它还允许索引内容,而不仅仅是文件名。它确实满足了您随时了解最新情况的需求。
答案4
btrfs
find-new
多年来一直实施针对子卷的命令。如果您保留相对最新的快照树,则可以使用它以原子方式监视文件系统的所有更改,而无需大惊小怪。
你会像这样使用它:
btrfs sub find-new /chk/path [gen-id]
您可以使用相同的命令获取所需的 gen-id 进行比较,但使用伪造的 gen-id。有更多信息在这里。