$ du -s | sort -rn | perl -ple'sub humanreadable { my ($s, $q, $u) = ($_[0], 1, 0); $s/=$q, $q*=1024, $u++ while $s > 1024; return sprintf "%.3g%s", $s, (" ", "K", "M", "G", "T")[$u] } s/^(\d+)\s+/sprintf "%10s ", humanreadable($1)/e;'