Com a implementação de zsh e pax suportando -0 :
printf '%sa
a/b
a/b.c
a/b/c
' foo foo/**/*(D) | pax -0rwdv /mnt/bar/ && rm -rf foo
Essas globs recursivas são classificadas lexicalmente (usando a ordem de intercalação da localidade) em cada nível. a antes de a/a antes de a/b antes de b ...
Observe que não é o mesmo que find foo -print0 | sort -z , que classifica os caminhos como um todo e, por exemplo, classificaria:
a
a/b
a/b/c
a/b.c
Nessa ordem na localidade C, em vez de:
printf '%sa
a/b
a/b.c
a/b/c
' foo foo/**/*(D) | pax -0rwdv /mnt/bar/ && rm -rf foo
em zsh globs.