Eu acho que essas são as maneiras comuns de passar o resultado de um comando para o próximo, como entradas.
Como esses três funcionam? Ou quais são alguns sites / URLs?
Primeiras coisas a digitar:
man find
man xargs
O find
comando imprime os resultados na saída padrão por padrão, portanto, a -print
opção normalmente não é necessária, mas -print0
separa os nomes de arquivos com um byte 0 (NULL) para que nomes contendo espaços ou novas linhas possam ser interpretados corretamente.
A -exec
opção é algo que você pode usar em vez de xargs - o comando find executa um comando para cada item encontrado.
O xargs
comando lê cadeias separadas por espaço ou nova linha (normalmente do comando find , mas elas podem vir de qualquer lugar) e executa algum comando para cada cadeia.
Se o xargs for executado com uma opção -0 , ele esperará seqüências separadas por NULL como saída porfind ... -print0
A vantagem do xargs é que ele pode agrupar as seqüências de caracteres, para que ele execute apenas um comando uma ou duas vezes em vez de n vezes.
Portanto, no uso normal:
find start_directory -name '*.txt' | xargs ls -l
find listaria os nomes de arquivos e o xargs emitia comandos como:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
o que é mais rápido do que emitir o seu comando find:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Observe que o xargs não é mais necessário nas implementações atuais de localização que provavelmente suportam essa sintaxe POSIX:
find directory -name '*.txt' -exec ls -l {} +
que é mais simples e um pouco mais rápido que a variante xargs.
find directory -name '*.txt' | xargs ls -l
Veja os seguintes artigos:
Linux e Unix encontram o tutorial de comando com exemplos
xargs: Como controlar e usar argumentos da linha de comando
fonte