Pel*_*ier 12 linux unix search grep command-line
我发现自己一遍又一遍地搜索相同的代码库。虽然效果很好,但每个命令大约需要 10 秒,所以我正在考虑如何让它更快。
那么可以grep
使用某种索引吗?我知道索引可能对复杂的正则表达式没有帮助,但我主要使用非常简单的模式。这种情况下是否存在索引器?
编辑:我知道 ctags 等,但我想做全文搜索。
有诸如recoll、swish-e和sphinx 之类的工具,但您必须检查它们是否可以支持您需要的那种搜索条件。
回忆
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
可以显着加快搜索速度。