通过部分内容查找文件

通过部分内容查找文件

我在特定存储库中有许多文件,我必须找到一个内容中有特定字符串的文件(实际上引用该文件Version.cc.in)。找到它的最佳解决方案是什么?

答案1

您可以使用 grep:

grep "text" /path/to/directory/*

对于递归搜索,您可以使用-rgrep 选项:

grep -r "text" /path/to/directory/*

**在路径中:

grep "text" /path/to/directory/**/*

但是,**操作符的可用性取决于 shell - 据我所知它位于zshand bash(仅 4?),它可能在其他 shell 中不可用。

答案2

您可以使用一个名为确认。其描述为:

ack 是一个类似于 grep 的工具,专为拥有大型异构源代码树的程序员而设计。

基本上它与 grep 类似,都在文件中搜索模式,但有一些关键区别。也就是说,它会递归搜索并默认忽略版本控制和备份文件(例如CVS、.svn、foo~、#foo#)。由于它是用 Perl 构建的,因此它是跨平台的。它还允许您指定要搜索的目录中的特定文件类型,因此如果您只想搜索 Perl 文件,您可以键入

ack --perl pattern

如果有兴趣,可以在网站上找到“使用 ack 而不是 grep 的十大理由”列表。确认主页。另外,还有一个Vim 插件

答案3

还有一个类似的工具确认,称为银色搜寻者。开发者声称它“就像 ack,但更好。它很快。快得要命。唯一更快的是预先构建索引的东西,比如 Exuberant Ctags。”

答案4

如果您只想查找并列出文件,而不是实际内容,请使用-lgrep 选项:

grep -lr Version.cc.in $(pwd)/*

这将为您提供所有文件的列表以及它们的绝对路径(假设这些文件位于当前工作目录的目录/子目录中)。

相关内容