Você pode encadear chamadas para descobrir (uma vez, quando soube, que é possível, o que pode ser hoje). Obviamente, isso só é possível enquanto você permanecer em busca. Depois de canalizar para xargs, fica fora de escopo.
Pequeno exemplo, dois arquivos a.lst e b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Não há truque aqui - simplesmente o fato de que ambos contêm "fuddel", mas apenas um contém "fiddel".
Suponha que não sabíamos disso. Pesquisamos um arquivo que corresponde a 2 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, talvez você conheça a sintaxe do grep ou de outro programa para passar as duas strings como condição, mas esse não é o ponto. Todo programa que pode retornar verdadeiro ou falso, dado um arquivo como argumento, pode ser usado aqui - grep era apenas um exemplo popular.
E observe que você pode seguir find -exec com outros comandos find, como -ls ou -delete ou algo semelhante. Observe que essa exclusão não apenas remove o rm (remove arquivos), mas também remove o rmdir (remove os diretórios).
Essa cadeia é lida como uma combinação de comandos AND, desde que não seja especificado de outra forma (ou seja, com um -or
switch (e parens (que precisam ser mascarados))).
Portanto, você não está saindo da cadeia de busca, o que é útil. Não vejo nenhuma vantagem em usar -xargs, pois você deve ter cuidado ao passar os arquivos, o que é algo que a descoberta não precisa fazer - ele lida automaticamente com a passagem de cada arquivo como um argumento único para você.
Se você acredita que precisa de alguma máscara para encontrar aparelhos {} , sinta-se à vontade para visitar minha pergunta, que pede evidências. Minha afirmação é: você não.
find
. Muito obrigado!