Recentemente, tive um find ... | xargs ...
caso de uso que me surpreendeu. A questão envolve o caso em que find
não retorna correspondências.
Testando em dois sistemas, descobri que um se comporta como eu esperaria:
$ mkdir empty
$ find empty -type f | wc -l
0
$ find empty -type f | xargs echo file
$
Mas o outro não se comporta como eu esperaria:
$ mkdir empty
$ find empty -type f | wc -l
0
$ find empty -type f | xargs echo file
file
O que causa o comportamento no segundo caso e existe uma maneira de contornar isso? Quando find
retorna zero correspondências, gostaria xargs
de iterar zero vezes.
É para isso que serve -r na versão GNU:
No FreeBSD, esse é o comportamento padrão.