I typically run the command below to check size on each directory.
du -sBM /* | sort -nr | head -n20
However, specifying a block size of "M" here will give everything a value in "M". The problem with that is once you get below 1M everything reports back as 1M. So this solution is not optimal for me. If I run the command below:
du -sh /* | sort -nr | head -n20
I get the output I really want (block sizes in G,M,and K) but its all out of order. For instance:
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
I get M's on top of G's and K's on top of M's and so on. I want my output to look like this:
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
Is there a one-liner here that would do what I want or would a script be a better solution here?