在 ubuntu 上搜索文件系统并获得即时结果的最佳方法是什么?

在 ubuntu 上搜索文件系统并获得即时结果的最佳方法是什么?

在 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 以及如何使用它们?

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 能够赶上并淘汰所有这些,但目前我主要使用的是这三个。

其他选择也许值得尝试:

  • 侏儒可能是 Synapse 的一个不错的替代品,但据我了解,它只能索引 5000 个文件,这对我来说还不够
  • pdfgrep有时很有用,但速度很慢,而且据我所知没有 GUI

答案4

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

import fnmatch
import os

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

相关内容