Como o Mac OS X não possui a opção -h
para sort
, tentei e aprendi sed
e awk
em uma primeira tentativa:
du -sk * | sort -g | awk '{ numBytes = $1 * 1024; numUnits = split("B K M G T P", unit); num = numBytes; iUnit = 0; while(num >= 1024 && iUnit + 1 < numUnits) { num = num / 1024; iUnit++; } $1 = sprintf( ((num == 0) ? "%6d%s " : "%6.1f%s "), num, unit[iUnit + 1]); print $0; }'
é uma linha longa. Expandido, é:
du -sk * | sort -g | awk '{
numBytes = $1 * 1024;
numUnits = split("B K M G T P", unit);
num = numBytes;
iUnit = 0;
while(num >= 1024 && iUnit + 1 < numUnits) {
num = num / 1024;
iUnit++;
}
$1 = sprintf( ((num == 0) ? "%6d%s " : "%6.1f%s "), num, unit[iUnit + 1]);
print $0;
}'
Eu testei no Mac OS X Mavericks, Yosemite, Ubuntu 2014-04, com awk
sendo o padrão awk
(que é nawk
, porque awk
e nawk
apontam para /usr/bin/mawk
) ou gawk, e todos eles trabalharam.
Aqui está uma amostra da saída em um Mac:
0B bar
0B foo
4.0K wah
43.0M Documents
1.2G Music
2.5G Desktop
4.7G Movies
5.6G VirtualBox VMs
9.0G Dropbox
11.7G Library
21.2G Pictures
27.0G Downloads
em vez de du -sk *
, vi na resposta de @ Stefan, onde o total geral também é exibido e sem atravessar nenhum ponto de montagem do sistema de arquivos, usando du -skcx *