Manipular a saída de du para obter uma impressão personalizada [duplicada]

0

Normalmente, executo o comando abaixo para verificar o tamanho em cada diretório.

du -sBM /* | sort -nr | head -n20

No entanto, especificar um tamanho de bloco "M" aqui dará a tudo um valor em "M". O problema é que quando você fica abaixo de 1M, tudo é reportado como 1M. Então essa solução não é ideal para mim. Se eu executar o comando abaixo:

du -sh /* | sort -nr | head -n20

Eu obtenho a saída que eu realmente quero (tamanhos de bloco em G, M e K), mas está tudo fora de ordem. Por exemplo:

618M    /var
387M    /lib
336M    /home
260K    /root
184K    /dev
102M    /boot
32M /etc
32K /tmp
27M /lib64
24K /opt
16K /lost+found
14M /sbin
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup
2.2G    /usr

Eu obtenho M's em cima de G's e K's em cima de M's e assim por diante. Quero que minha saída seja assim:

2.2G    /usr
618M    /var
387M    /lib
336M    /home
102M    /boot
32M     /etc
27M     /lib64
14M     /sbin
260K    /root
184K    /dev
32K     /tmp
24K     /opt
16K     /lost+found
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup

Existe uma frase aqui que faria o que eu queria ou seria um script uma solução melhor aqui?

    
por user53029 14.01.2016 / 19:44

1 resposta

2

Use a opção sort do -h em vez de -n :

du -sh /* | sort -hr | head -n20
    
por 14.01.2016 / 19:46