使用即时结果在ubuntu上搜索我的文件系统的最佳方法是什么?

在ubuntu上搜索我的文件系统并几乎立即获得结果的最佳方法是什么? 我使用了鲶鱼跟踪器和ubuntu提供的常用搜索工具。

跟踪器什么都没找到, ubuntu搜索工具太慢了, 鲶鱼大部分时间都没找到。 我有很多想要访问的PDF和DJVU文件。 在Windows中,有一个名为search的程序几乎可以立即返回结果。 我想要一个类似的linux工具。

请尽可能详细解答,因为我是linux的新手。 如果在ubuntu中不存在这样的工具,我有什么机会在其他linux发行版中找到这样的工具,例如mandriva,redhat?

Recoll可以为您做到这一点。 它具有几乎所有可以想象的文档类型的全文索引,以及按PDF文档的页码排序的结果概述。

在此处输入图像描述

在此处输入图像描述

您可以通过软件中心安装它(搜索Recoll )或通过Recoll PPA(包括Unity镜头/示波器)获得新的最新版本。 首先添加官方Recoll存储库:

sudo add-apt-repository ppa:recoll-backports/recoll-1.15-on sudo apt-get update 

如果您使用的是Ubuntu 13.04及以下版本,则必须安装recoll-lens

 sudo apt-get install recoll recoll-lens 

对于Ubuntu 13.10及以上,请使用unity-scope-recoll

 sudo apt-get install unity-scope-recoll 

如果这是您第一次从PPA安装,请务必先阅读这些内容:

什么是PPA以及如何使用它们?

PPA是否可以安全地添加到我的系统中,需要注意哪些“危险信号”?

在能够使用Recoll镜头/示波器之前,您必须至少执行一次Recoll来构建搜索索引。

有关如何使用Recoll的更多文档可以在这里找到。

仅搜索文件名 – 忽略内容 –
你可以使用locate工具。 搜索速度非常快。

 locate '*.pdf' 

将列出所有的pdf文件。 有关详细信息,请参见手册页。

 $ locate --help Usage: locate [OPTION]... [PATTERN]... Search for entries in a mlocate database. -b, --basename match only the base name of path names -c, --count only print number of found entries -d, --database DBPATH use DBPATH instead of default database (which is /var/lib/mlocate/mlocate.db) -e, --existing only print entries for currently existing files -L, --follow follow trailing symbolic links when checking file existence (default) -h, --help print this help -i, --ignore-case ignore case distinctions when matching patterns -l, --limit, -n LIMIT limit output (or counting) to LIMIT entries -m, --mmap ignored, for backward compatibility -P, --nofollow, -H don't follow trailing symbolic links when checking file existence -0, --null separate entries with NUL on output -S, --statistics don't search for entries, print statistics about each used database -q, --quiet report no error messages about reading databases -r, --regexp REGEXP search for basic regexp REGEXP instead of patterns --regex patterns are extended regexps -s, --stdio ignored, for backward compatibility -V, --version print version information -w, --wholename match whole path name (default) 

我还通过非常大的PDF库进行了大量搜索。 对我来说,这是Linux的第一挫折,让我想念MS Windows。 我已经尝试了所有这一切,我现在解决的解决方案是结合使用以下程序。

不幸的是,目前这些似乎都不在Ubuntu存储库中,并且可能不稳定。 那么如果Recoll(现在在Ubuntu 14.04的默认存储库中我相信?)或其他适合你的东西,最好坚持下去。

1)突触

安装:阅读这篇文章了解详细信息,但基本上您可以通过在终端中运行以下命令来安装它。

 sudo apt-add-repository ppa:synapse-core/testing sudo apt-get update sudo apt-get install synapse 

  • 非常快速,智能的搜索结果
  • 如果你想要的东西没有马上出现,你可以按下并选项卡以找到更多“定位”。

  • 只搜索文件名,而不是文本。
  • 似乎错过了很多,特别是在你尝试“定位”之前。

2)发射

安装:在此处下载包。

正:

  • 几乎与Synapse一样快
  • 结果非常全面。

负:

  • 也只搜索文件名。
  • 可能是这三个中最大的一个。

3)DocFetcher

安装:除非您可以在某个存储库中找到它,否则您将无法使用便携版本。 在此处下载并按照说明操作。

正:

  • 在PDF文本中搜索
  • 综合但相关的结果,按逻辑顺序(我通常发现Recoll或Tracker中的结果完全相反)
  • 完整的文档预览窗格,以便您在打开文件之前可以看到更多文件(不只是几行)
  • 合理快速

负:

  • 难以在Ubuntu中本地安装和运行(例如,没有Java运行时)
  • 比仅搜索文件名的应用程序慢得多

希望Dash会赶上并使所有这些过时,但与此同时这三个主要是我正在使用的。

其他选择可能值得尝试:

  • Gnome-Do可能是Synapse的一个有价值的替代品,但最后我检查它只能索引5000个文件,这对我来说还不够
  • pdfgrep有时很有用,但很慢,没有我所知道的GUI

在此处输入图像描述 你也可以使用gnome-search-tool。 你可以通过sudo apt-get install gnome-search-tool来获得它

以下Python代码将非常快速地返回搜索结果。 只需将fnmatch.fnmatch(file,'*.txt)的第二个参数更改为您要查找的内容即可。 它非常快。

 import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print file 

另一种选择是Synapse。
整合Zeitgeist结果。
我的系统上有很多文档,并且对Synapse能够找到我需要的文件的速度感到惊讶。

sudo apt-get install synapse

干杯

对于命令行选项, “silverlight搜索者”在我看来是最好的。 比findawk快得多,并且使用更简单:

ag

从ubuntu 14.04安装

sudo apt-get install silversearcher-ag

看一下针对findawk一些速度比较

https://github.com/ggreer/the_silver_searcher