如何递归地grep目录中的特定文件?

Eri*_*son 14 linux unix grep

我是 linux 和 grep 的新手,并试图找到解决办法。

通过使用,find -name *.java我能够在特定目录中找到所有 java 文件的名称。假设我想计算foo这些文件中出现的次数,我该怎么做?

我一直在尝试这样的事情:

grep -r "foo" *.java
Run Code Online (Sandbox Code Playgroud)

并得到如下回复:

grep:  *.java:  No such file or directory
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ara*_*orn 16

find . -name '*.java' | xargs grep <your pattern here>
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,使用空终止项,以便其中包含空格的文件名不会被拆分为两个文件名: find . -name '*.java' -type f -print0 | xargs -0 grep &lt;你的模式在这里&gt; (5认同)

小智 6

有一个专门为这种需求设计的工具:ack

ack 是一个类似 grep 的工具,针对拥有大量异构源代码树的程序员

另请阅读“使用 ack 而不是 grep 的 10 大理由”。确认页面。