使用即时结果在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搜索者”在我看来是最好的。 比find
和awk
快得多,并且使用更简单:
ag
从ubuntu 14.04安装
sudo apt-get install silversearcher-ag
看一下针对find
和awk
一些速度比较