Tente executar o comando find
sem a última parte:
find ./ -name "*.php"
O que você verá é uma lista de nomes de arquivos, todos terminados em .php
.
Agora, o comando xarg
lê todos esses nomes de arquivo do pipe, pega um monte deles (você pode definir quantos usando a opção -n 2
) e chama seu argumento com esses nomes. Portanto, se a saída de find for file1.php file2.php file3.php
, e xarg
agrupar no máximo dois arquivos juntos (ou forçar isso com xargs -n 2
), ele chamaria
grep "my_awesome_function(" file1.php file2.php
grep "my_awesome_function(" file3.php
que, por sua vez, produz sua saída.
Você pode ver o que realmente está acontecendo, inserindo um echo
:
find ./ -name "*.php" | xargs echo grep "my_awesome_function("
Também brinque com o agrupamento:
find ./ -name "*.php" | xargs -n 2 echo grep "my_awesome_function("