Primeiras coisas para digitar:
man find
man xargs
O comando find
imprime resultados para a saída padrão por padrão, portanto a opção -print
normalmente não é necessária, mas -print0
separa os nomes de arquivos com um byte 0 (NULL) para que os nomes contendo espaços ou novas linhas possam ser interpretado corretamente.
A opção -exec
é algo que você pode usar em vez de xargs - o comando find executa um comando para cada item que encontrar.
O comando xargs
lê strings separadas por espaço ou nova linha (geralmente do comando find , mas elas podem vir de qualquer lugar) e executa algum comando para cada string.
Se xargs for executado com uma opção -0 , ele esperará seqüências separadas por NULL como saída por find ... -print0
A vantagem do xargs é que ele pode agrupar as strings, de modo que ele apenas execute um comando uma ou duas vezes, em vez de n vezes.
Então, no uso normal:
find start_directory -name '*.txt' | xargs ls -l
encontrar listaria os nomes dos arquivos, e xargs emitia comandos como:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
que é mais rápido do que ter seu comando find:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt