rev
e egrep
e uniq
estão todos comendo seus zeros e vendo uma única linha. Se você tem o GNU find
e uniq
você pode simplificar muito isso:
find ...tests... -printf '%hfind ...tests... -printf '%h%pre%' | uniq -z | xargs -0 du -sh
' | uniq -z | xargs -0 du -sh
A opção find
do GNU -printf
usa um formato descrevendo a saída para cada arquivo. %h
é o formato do caminho até, mas não incluindo o nome do arquivo, e, em seguida,
torna-o com terminação zero. uniq -z
cat
diz para usar zeros para finalizar cada registro - caso contrário, ele só verá uma única linha e, basicamente, agirá como xargs
. sort -z -u
pode continuar como você tinha.
É possível que uniq
seja melhor que .
para explicar nomes fora de ordem, embora seus requisitos de profundidade máxima signifiquem que somente -mindepth 2
aparecerá mais de uma vez com qualquer coisa entre eles. %code% evitaria isso também.
Se nenhum dos seus nomes de arquivo tiver zeros neles