使用索引使 grep 更快?

Pel*_*ier 12 linux unix search grep command-line

我发现自己一遍又一遍地搜索相同的代码库。虽然效果很好,但每个命令大约需要 10 秒,所以我正在考虑如何让它更快。

那么可以grep使用某种索引吗?我知道索引可能对复杂的正则表达式没有帮助,但我主要使用非常简单的模式。这种情况下是否存在索引器?

编辑:我知道 ctags 等,但我想做全文搜索。

Red*_*ick 5

全文索引

有诸如recollswish-esphinx 之类的工具,但您必须检查它们是否可以支持您需要的那种搜索条件。

回忆

Recoll 是一个用于 Unix/Linux 的个人全文搜索工具。

Swish-e

Swish-e 是一个快速、灵活且免费的开源系统,用于索引网页或其他文件的集合。

狮身人面像

Sphinx 可让您快速轻松地批量索引和搜索存储在 SQL 数据库、NoSQL 存储或文件中的数据

格雷普

我很惊讶 grep 和你描述的一样慢,你能减少被搜索的文件数量吗?例如,当我只需要搜索一个可执行文件的源文件(在项目中的许多文件中)时,我从列出该程序的源文件的命令中向 grep 提供名称:

grep expression `sources myprogram`
Run Code Online (Sandbox Code Playgroud)

sources 是特定于我的开发环境的程序,但您可能拥有(或能够构建)等效的程序。

我假设您已经尝试过明显的技术,例如

find /foo/myproject -name "*.c" -exec fgrep -l searchtext
Run Code Online (Sandbox Code Playgroud)

我读过一个建议-P电流选项grep可以显着加快搜索速度。


aki*_*ira 4

cscope怎么样,这适合你的鞋子吗?

允许搜索代码:

  • 所有对符号的引用
  • 全局定义
  • 函数调用的函数
  • 函数调用函数
  • 文本字符串
  • 正则表达式模式
  • 一份文件
  • 文件包括一个文件