grep imprime nomes de arquivos E retorna um valor True / False; Se o valor for True, a ação -print
imprimirá o arquivo. Então você tem duas possibilidades:
find . -name '*.java' -exec grep -l 'someText' {} \; 2>/dev/null
ou
find . -name '*.java' -exec grep -q 'someText' {} \; -print 2>/dev/null
E lembre-se de citar *.java
. Caso contrário, o shell pode expandi-lo para a lista de arquivos java no diretório atual.
Observe também que você não precisa executar um grep
por arquivo, é melhor você fazer isso:
find . -name '*.java' -exec grep -l 'someText' {} + 2>/dev/null
Observe que 2>/dev/null
suprime os erros de find
e grep
. Se você quiser apenas tornar grep
quieto, poderá escrevê-lo:
find . -name '*.java' -exec grep -sl 'someText' {} +
Por fim, observe que a implementação GNU de grep
também pode fazer o trabalho de find
:
grep -slr --include='*.java' 'someText' .