如何grep子目录中所有java文件中的字符串?

问题描述 投票:0回答:3

我想用

grep
来查找当前目录下所有 java 文件中包含
String
的行。

我尝试过:

grep -r "String" **/*.java

但它不起作用:

grep : **/*.java:  no such file or directory

怎么写?


更新

我在windows上,使用

grep
提供的
unxUtils
,不支持
--include
参数。还有其他办法吗?

regex string grep
3个回答
62
投票

使用递归grep:

grep -r "String" --include=*.java .

8
投票

我猜

unxUtils
提供了
find
实用程序。所以你可以尝试这样做:

find . -name "*.java" -exec grep "String" {} \;

find . -name "*.java" -exec grep "String" {} \+

第一个版本将为找到的每个文件执行一个

grep
命令。后一个版本只会根据需要执行尽可能多的
grep
命令,但并非每个
find
版本都支持
+
参数。


0
投票

这工作正常。

find . -iname "*.java" -exec grep "String" {} +;

-exec
对找到的每个文件执行命令。

{}
代表
find
找到的文件名,
+
告诉
find
执行
grep
尽可能多的文件(以提高效率)。

© www.soinside.com 2019 - 2024. All rights reserved.