Como file
in $( echo $file | md5 )
não será interpretado, você precisa de uma solução alternativa.
Uma possibilidade é simplesmente canalizá-lo em um loop while
e ler cada saída - nesse caso, melhor ignorar xargs
como um todo
find ... | while read file ; do cp "$file" "datnew/$( echo "$file" | md5 )" ; done
Para usá-lo com -print0
, substitua o caractere nulo por uma nova linha usando tr
find ... -print0 | tr 'find ... | while read file ; do cp "$file" "datnew/$( echo "$file" | md5 )" ; done
0\' '\n' | while read ; do ... ; done