在 Ubuntu 上搜索文件系统并几乎立即获得结果的最佳方法是什么?我曾经使用过鲶鱼,追踪器以及 ubuntu 提供的常用搜索工具。
追踪器什么也没找到,ubuntu 搜索工具太慢了鲶鱼大多数时候都找不到任何东西。我有很多想要访问的 PDF 和 DJVU 文件。在 Windows 中,有一个名为搜索一切几乎可以立即返回结果。我想要一个类似的 Linux 工具。
请尽可能详细地回答,因为我是 Linux 新手。如果 ubuntu 中没有这样的工具,那么我在其他 Linux 发行版(例如 mandriva、redhat)中找到这样的工具的可能性有多大?
答案1
雷科尔可以为您做到这一点。它具有几乎所有您能想到的文档类型的全文索引功能,以及按 PDF 文档页码排序的结果概览。
您可以通过软件中心安装(搜索雷科尔)或通过 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 可以安全地添加到我的系统中吗?需要注意哪些“危险信号”?
您必须至少执行一次 Recoll 来构建搜索索引,然后才能使用 Recoll 镜头/瞄准镜。
关于如何使用 Recoll 的更多文档可以在这里找到这里。
答案2
如果要仅搜索文件名(忽略内容),
您可以使用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)
答案3
我也在非常大的 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)Launchy
安装:下载软件包这里。
积极的:
- 几乎和 Synapse 一样快
- 结果非常全面。
消极的:
- 也仅搜索文件名。
- 可能是这三个中错误最多的一个。
3) DocFetcher
安装:除非你能在某个存储库中找到它,否则你只能使用便携版本。下载它这里并按照指示操作。
积极的:
- 在 PDF 文本内搜索
- 全面且相关的结果,符合逻辑顺序(相比之下,我通常发现 Recoll 或 Tracker 中的结果完全混乱)
- 完整的文档预览窗格,以便您在打开文件之前可以看到更多内容(而不仅仅是几行)
- 相当快
消极的:
- 难以在 Ubuntu 中本地安装和运行(例如没有 Java 运行时)
- 比仅搜索文件名的应用程序慢得多
希望 Dash 能够赶上并淘汰所有这些,但目前我主要使用的是这三个。
其他选择也许值得尝试:
答案4
以下 Python 代码将非常快速地返回搜索结果。只需将第二个参数更改fnmatch.fnmatch(file,'*.txt)
为您要查找的内容即可。速度非常快。
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.txt'):
print file