在 UNIX 上简单易用的 CLI 文件索引搜索?

在 UNIX 上简单易用的 CLI 文件索引搜索?

我需要一个简单的 unix 实用程序,它允许我使用基本参数快速地在文件中进行搜索(此文件夹,而不是这种文件......)。

目前我使用手工制作的 find 函数,带有 grep 和许多参数。它在小文件夹上足够快。问题是我主要处理一个包含大约 300k 个文件的文件夹,然后它就太慢了。

我正在寻找一个小工具,它可以根据需要索引此目录(文本文件)中文件的内容,并允许我在此索引内进行搜索(当然还显示相关内容)。

我正在寻找的是特工搜查 适用于 CLI 中的 Unix 系统。

如果可能的话,我希望不需要安装太多东西。狮身人面像例如太麻烦了,我需要一个轻量级的替代方案。

感谢您的建议。

答案1

在你准备设置更复杂的东西之前,我不得不问你是否已经尝试过ack。它很像,grep但设计用于弥补它的缺点;ack 只会自动搜索文本文件并跳过二进制文件等等。

确认主页(如果它已启动并正在运行,现在它似乎对我来说不起作用)或者如果您的发行版有可用的话,通过包管理器安装它并试用。

ack 主页的某些版本似乎在谷歌缓存, 也。

答案2

locate(或类似工具)随许多 Linux 系统提供。它每天扫描文件系统,因此如果您不需要实时解决方案,那么此工具可能适合您。

我的 Fedora 工作站和 CentOS 服务器均配备移动定位,但也有其他几种口味。

答案3

这取决于多少时间等同于“太麻烦”,因为您要么寻找运行时解决方案,要么寻找挖掘每个文件并根据答案构建数据库的东西。

ack-grep正如 Janne Pikkaraiined 所建议的,它看起来像前者类别中的一个有用工具。

tracker (见网站)值得一看,因为它是一个不一定具有全局桌面搜索功能的 CLI 工具,但查询语法很奇怪(至少在我看来);例如

$> tracker-sparql -q "SELECT nie:url(?f) WHERE { ?f fts:match 'red OR blue yellow' }"

recoll看起来它可能具有更易于理解的搜索语法,并且比跟踪器更具可定制性。然而 CLI 工具却不是默认构建。有趣的是,你还可以构建一个Python api。

这篇文章linux.com很有趣。

相关内容