Você não precisa de more
(ou cat
) se você tem a lista de arquivos que você precisa para grep: apenas dê grep
os arquivos como um argumento (não há necessidade de enviar os dados através de uma segunda ferramenta ):
grep -i abc *.txt | wc -l
A principal diferença é que find
não apenas listará os arquivos no diretório atual (como a expansão do shell de *.txt
), mas também recorrerá aos subdiretórios:
find . -name "*.txt" | xargs grep -i abc | wc -l
No segundo caso, se houver alguns arquivos *.txt
em subdiretórios, eles também serão fornecidos como argumentos para o comando grep
.
E, a propósito, grep
tem uma opção -c
para contar as ocorrências (não há necessidade de wc
)
grep -c -i abc *txt
também fornecerá o número de ocorrências por arquivo e não o total