我发现自己一遍又一遍地 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 磁盘上。