使用索引来让 grep 更快吗?

使用索引来让 grep 更快吗?

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

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

编辑:我了解 ctags 之类的东西,但我想进行全文搜索。

答案1

关于什么范围,这和你的鞋子配吗?

允许搜索代码:

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

答案2

全文索引

有以下工具:回忆嗖嗖狮身人面像但您必须检查他们是否能支持您需要的搜索条件。

雷科尔

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

斯威什

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

狮身人面像

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

grep

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

grep expression `sources myprogram`

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

我假设你已经尝试过一些显而易见的技巧,例如

find /foo/myproject -name "*.c" -exec fgrep -l searchtext

我读过建议-P当前的选项可以grep显著加快搜索速度。

答案3

您可以将代码库复制到 RAM 磁盘上。

答案4

如果您想使用全文搜索引擎..请使用以下一个:

相关内容