Linux中是否有类似“ Everything”的文件搜索引擎?


46

在Windows上,有一个很好的文件搜索引擎,名为Everything,它(与相似find)非常快,并且(与相似locate)总是返回最新结果。AFAIK通过填充NTFS日志中的数据库来工作(不适用于其他文件系统)。

我想知道Linux(ext3或ext4)是否有类似的东西(我不在乎GUI;我的意思是速度和最新保证)。我用谷歌搜索,但是什么也没找到。可以做这样的事情,甚至有人在做吗?


2
我对“一切”的满意之处在于,它不仅是瞬时的,而且还适用于多个分区,例如具有六个Windows安装和多个数据分区的多重引导系统。我想进行一个Linux搜索,该搜索将跨多个Linux分区,而不仅仅是单个分区。
牧师2014年

存在locate的许多变体(mlocate,slocate,rlocate等),它们具有自己的特征(增量updatedb,实时或安全索引等)。所有这些都是高度可配置的(updatedb.conf的联机帮助页并找到)
Manu H

Answers:


30

您可以看看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


1
我认为这个答案应该被接受。rlocate本身已经给出了完整的答案。
phunehehe 2012年

4
2017年有什么变化?rlocate提到Linux 2.6,没有Ubuntu 16.04软件包。recoll似乎很有趣,而且更新了,尽管对我来说太过分了。Doodle自16.04起具有Ubuntu软件包,因此可以选择。
斯特凡纳·古里科

为什么recoll会产生太大的作用,您还可以从命令行运行recoll。如果需要,它还可以与kde和unity很好地集成。
学生

我与cat鱼有关的最大问题是无法与文件交互-如果我想从搜索结果中复制20个文件,则需要Show in File Manager20倍。
安南

rlocate的文档中列出了我不知道如何满足的“内核配置”要求,并且如果我解压缩并运行,./configure我会被告知必须“安装具有完整内核源代码的软件包”。非专家似乎无法使用此工具。
Qwertie

7

我也在搜索Linux的“搜索所有内容”工具,并在Ubuntu存储库中发现了“搜索猴子”爱它!

它重量轻,加载迅速,通配符搜索可立即产生大量结果,并且具有过滤器和高级搜索方法。

现在,我有了适用于Linux的“所有”搜索工具!


链接为残破
克里斯·内维尔

4

有趣的想法是在文件系统中实现这一点,但据我所知没有这样的想法。除了一些试图深入fs高层的插​​件以尽早掌握数据(更新:所有内容都归类于此)之外,恐怕您仅限于不那么令人满意的过程。定期索引。

libferris虚拟文件系统可能是您所寻找的最接近的东西。

在索引世界中,您可能想看看glimpse,它至少能够更新和附加其索引。

更新:我刚刚阅读了有关“所有内容”的内容,而且它似乎也不是FS所固有的,因此libferris并不是那么遥不可及,而且它还允许索引内容,而不仅仅是文件名。它确实满足了您始终保持最新状态的需求。


Ferris邮件列表自2007年以来枯竭,并且不会在2010年以后继续。存在一个github存储库,该存储库在mi-2016和2017年3月之间不处于活动状态github.com/monkeyiq/ferris/commits/master。也许它还在继续。
斯特凡纳·古里科


2

你检查过愤怒的搜索了吗?它在描述中声称它就像一切。FSearch也声称相同。


1
考虑到当您用Google搜索Linux的Evernote替代品时,您指向FSearch的搜索结果有多少,我很惊讶您是唯一将其发布在这里的人。
Ghos3t

1

应该可以使用inotify在几行代码中构建类似这样的东西(还有inotify-tools包,可以使用shell脚本来实现此功能)。

(我会很惊讶地发现任何这样的工具都可以从日志中得到驱动-更可能是在虚拟文件系统层中实现的)


1
我不确定在inotify这里是否有用,因为它不是递归的。为整个树创建监视很简单,但是内核可以处理成千上万的监视吗?即使可以,对我来说这也不是一种有效的方法。
maaartinus'2


1

btrfs多年来,已经执行了find-new针对子卷的命令。如果保留相对较新的快照树,则可以使用它以原子方式监视文件系统的所有更改,而不必大惊小怪。

您将使用它像:

btrfs sub find-new /chk/path [gen-id]

您可以使用相同的命令,但使用伪造的gen-id来获得进行比较所需的gen-id。这里有更多信息


1

定位命令的UI前端,其工作原理与“一切”几乎相同:

https://github.com/AlexTuduran/Locator/releases


1
这似乎是建立在locate永远不会自动更新的错误前提上的。
roaima 2015年

请发展。您定位更新是什么意思?
亚历克斯·杜杜兰

您的GitHub项目指出,Unix命令locate使用相同的原理,只是数据库不会自动更新。该locate软件包包括一个cron自动更新数据库的任务。
roaima 2015年

如果的确如此,那只会帮助该工具的目标。自动更新数据库可以减轻用户执行其他任务的负担。如果需要立即更新,用户仍然可以显式更新数据库。还是这里关于错误前提的关注点是什么?
Alex Tuduran

1

我在运行Stretch的Raspberry Pi 3 B +上使用愤怒搜索,它工作正常。就像在Windows上搜索“所有内容”一样,它确实非常快。能够这么快找到文件非常好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.