Saturday, September 19, 2015

linux - How can I sort du -h output by size



I need to get a list of human readable du output.



However, du does not have a "sort by size" option, and piping to sort doesn't work with the human readable flag.



For example, running:




du | sort -n -r 


Outputs a sorted disk usage by size (descending):



du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1

508 ./dir2


However, running it with the human readable flag, does not sort properly:



du -h | sort -n -r

508K ./dir2
64M .
61M ./dir3

2.1M ./dir4
1.1M ./dir1


Does anyone know of a way to sort du -h by size?


Answer



As of GNU coreutils 7.5 released in August 2009, sort allows a -h parameter, which allows numeric suffixes of the kind produced by du -h:



du -hs * | sort -h



If you are using a sort that does not support -h, you can install GNU Coreutils. E.g. on an older Mac OS X:



brew install coreutils
du -hs * | gsort -h


From sort manual:



-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)



No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...