Como saber os tamanhos de arquivos e pastas, classificados, e em MB, GB, em vez de um inteiro longo? [duplicado]

1

Em um Mac, usando o Bash, eu costumo fazer

du -sh *

para informar os tamanhos de arquivos e pastas no diretório atual, em MB e GB. Mas se eu quiser classificá-los pelos tamanhos, eu posso fazer

du -sh * | sort -g

e não funcionará bem, porque o M e o G não são levados em conta (de modo que 44MB podem ser maiores do que 20GB, porque 44 é maior que 20).

Existe uma maneira de não escrever um programa e apenas usar comandos do UNIX e / ou uma função do Bash para fazer isso?

Se eu me preocupo com os arquivos e pastas que estão no intervalo GB , posso fazer isso:

du -sh * | egrep "^\s*\d+(.\d+)?G\s" | sort -g

e será exibido

2.6G    ski video clips
7.6G    trip 2012.mp4
 12G    trip photos  

mas se TB ou MB for considerado, o acima não funcionará. Existe uma maneira de fazer isso mais geralmente usando os comandos UNIX / Mac OS X?

    
por 太極者無極而生 21.04.2015 / 02:57

1 resposta

1

link diz:

du -ks $(ls -d */) | sort -nr | cut -f2 | xargs -d '\n' du -sh 2> /dev/null

Isso é testado em um Mac e só executa du uma vez. Tem o menor erro que 1K = 1000 e não 1024:

du -sk * | sort -n | perl -pe '@SI=qw(K M G T P); s:^(\d+?)((\d\d\d)*)\s:$1.$SI[((length $2)/3)]."\t":e'
    
por 21.04.2015 / 08:11