find | xargs
deve ser sempre usado em conjunto com -print0
e -0
, conforme explicado em man find
:
-print0
True; print the full file name on the standard output, followed
by a null character (instead of the newline character that
-print uses). This allows file names that contain newlines or
other types of white space to be correctly interpreted by
programs that process the find output. This option corresponds
to the -0 option of xargs.
Assim você quer:
find . -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 du -sh
ou sem find
e com um shell suficientemente evoluído ( zsh
):
print -N *(/) | xargs -0 du -sh
levando você ao que é ainda mais simples:
du -sh *(/)