在Windows上,有一个很好的文件搜索引擎,名为Everything,它(与相似find
)非常快,并且(与相似locate
)总是返回最新结果。AFAIK通过填充NTFS日志中的数据库来工作(不适用于其他文件系统)。
我想知道Linux(ext3或ext4)是否有类似的东西(我不在乎GUI;我的意思是速度和最新保证)。我用谷歌搜索,但是什么也没找到。可以做这样的事情,甚至有人在做吗?
在Windows上,有一个很好的文件搜索引擎,名为Everything,它(与相似find
)非常快,并且(与相似locate
)总是返回最新结果。AFAIK通过填充NTFS日志中的数据库来工作(不适用于其他文件系统)。
我想知道Linux(ext3或ext4)是否有类似的东西(我不在乎GUI;我的意思是速度和最新保证)。我用谷歌搜索,但是什么也没找到。可以做这样的事情,甚至有人在做吗?
Answers:
您可以看看rlocate,它是最新的一次locate的重新实现。另一个有趣的项目是recoll,它还支持实时索引编制,并允许您(例如beagle)另外进行全文搜索。最后,我要提到一下Doodle,它也支持实时索引。对于Doodle来说,有一些不错的前端,例如cat 鱼。
请注意,您还可以通过使用urxvt作为终端仿真器并编写类似的内容来使(r)定位结果可点击
URxvt.perl-ext: default,matcher URxvt.urlLauncher: /usr/bin/gnome-open
URxvt.matcher.button: 1 URxvt.matcher.pattern.1: /.*
(然后执行xrdb -load ~/.Xdefaults
)
rlocate
本身已经给出了完整的答案。
Show in File Manager
20倍。
./configure
我会被告知必须“安装具有完整内核源代码的软件包”。非专家似乎无法使用此工具。
有趣的想法是在文件系统中实现这一点,但据我所知没有这样的想法。除了一些试图深入fs高层的插件以尽早掌握数据(更新:所有内容都归类于此)之外,恐怕您仅限于不那么令人满意的过程。定期索引。
libferris虚拟文件系统可能是您所寻找的最接近的东西。
在索引世界中,您可能想看看glimpse,它至少能够更新和附加其索引。
更新:我刚刚阅读了有关“所有内容”的内容,而且它似乎也不是FS所固有的,因此libferris并不是那么遥不可及,而且它还允许索引内容,而不仅仅是文件名。它确实满足了您始终保持最新状态的需求。
您可以使用locate
命令,如果要更新其数据库,请运行以下命令:
# updatedb
此命令在几秒钟内更新定位数据库
应该可以使用inotify在几行代码中构建类似这样的东西(还有inotify-tools包,可以使用shell脚本来实现此功能)。
(我会很惊讶地发现任何这样的工具都可以从日志中得到驱动-更可能是在虚拟文件系统层中实现的)
inotify
这里是否有用,因为它不是递归的。为整个树创建监视很简单,但是内核可以处理成千上万的监视吗?即使可以,对我来说这也不是一种有效的方法。
您可能想尝试小猎犬。不幸的是,http://www.beagle-project.org现在是托管域名-维基百科。
定位命令的UI前端,其工作原理与“一切”几乎相同:
locate
永远不会自动更新的错误前提上的。
locate
使用相同的原理,只是数据库不会自动更新。该locate
软件包包括一个cron
自动更新数据库的任务。