我想用
grep
来查找当前目录下所有 java 文件中包含 String
的行。
我尝试过:
grep -r "String" **/*.java
但它不起作用:
grep : **/*.java: no such file or directory
怎么写?
更新
我在windows上,使用
grep
提供的unxUtils
,不支持--include
参数。还有其他办法吗?
使用递归grep:
grep -r "String" --include=*.java .
我猜
unxUtils
提供了find
实用程序。所以你可以尝试这样做:
find . -name "*.java" -exec grep "String" {} \;
或
find . -name "*.java" -exec grep "String" {} \+
第一个版本将为找到的每个文件执行一个
grep
命令。后一个版本只会根据需要执行尽可能多的 grep
命令,但并非每个 find
版本都支持 +
参数。
这工作正常。
find . -iname "*.java" -exec grep "String" {} +;
-exec
对找到的每个文件执行命令。
{}
代表find
找到的文件名,+
告诉find
执行grep
尽可能多的文件(以提高效率)。