xargs
raramente é útil, porque espera entrada citada de uma maneira altamente peculiar que nenhuma ferramenta comum produz. E como você notou, mycommand $(find …)
não é bom, porque primeiro concatena todos os nomes de arquivos e depois divide no espaço em branco.
Use o -exec
primary de find
para executar md5
sem nenhum shell intermediário que exija aspas. Se a sua implementação de find
for razoavelmente atual, você poderá fazer com que o xargs
seja famoso, o que é invocar o programa md5
uma vez por lote de argumentos.
find /root/newdir -type f -exec md5 {} +
Se o seu find
não for compatível com -exec … {} +
, substitua o +
por \;
. Isso faz com que find
invoque md5
para cada arquivo por vez. É um pouco mais lento, mas está disponível em todos os lugares.