Você pode querer encadear chamadas para encontrar (uma vez, quando você aprendeu, que é possível, o que pode ser hoje). Isto é claro, só é possível enquanto você ficar em busca. Depois de canalizar para xargs, está fora do escopo.
Exemplo pequeno, dois arquivos a.lst e b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Nenhum truque aqui - simplesmente o fato de que ambos contêm "fuddel", mas apenas um contém "fiddel".
Suponhamos que não sabíamos disso. Pesquisamos um arquivo que corresponde a duas condições:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Bem, você pode saber que a sintaxe do grep ou de outro programa passa ambas as strings como condição, mas esse não é o ponto. Todo programa que pode retornar true ou false, dado um arquivo como argumento, pode ser usado aqui - o grep era apenas um exemplo popular.
E note que você pode seguir encontrar -exec com outros comandos find, como -ls ou -delete ou algo similar. Note que excluir não só faz rm (remove arquivos), mas rmdir (remove diretórios) também.
Essa cadeia é lida como uma combinação E de comandos, desde que não seja especificado de outra forma (a saber, com uma opção -or
(e parens (que precisam de mascaramento))).
Então você não está deixando a cadeia de encontrar, o que é uma coisa útil. Eu não vejo nenhuma vantagem em usar o -xargs, já que você tem que ter cuidado ao passar os arquivos, o que é algo que o find não precisa fazer - ele automaticamente manipula a passagem de cada arquivo como um único argumento para você.
Se você acredita que precisa de algum mascaramento para encontrar {} chaves , sinta-se livre para visitar minha pergunta que pede evidências. Minha afirmação é: você não faz.