如何在子目录中的所有java文件中grep一个String?

Fre*_*ind 24 string grep

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

我试过了:

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

但它不起作用:

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

怎么写呢?


UPDATE

我在Windows上,使用grep提供的unxUtils,不支持--include参数.还有其他方法吗?

anu*_*ava 54

使用递归grep:

grep -r "String" --include=*.java .
Run Code Online (Sandbox Code Playgroud)


bmk*_*bmk 5

我猜想unxUtils提供find实用程序。因此,您可以尝试执行以下操作:

find . -name "*.java" -exec grep "String" {} \;
Run Code Online (Sandbox Code Playgroud)

要么

find . -name "*.java" -exec grep "String" {} \+
Run Code Online (Sandbox Code Playgroud)

第一个版本将对grep找到的每个文件执行一个命令。后者仅执行grep必要数量的命令,但并非每个find版本都支持该+参数。