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 -zcat 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