Signup/Sign In
Ask Question
Not satisfied by the Answer? Still looking for a better solution?

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?
by

2 Answers

akshay1995
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)
sandhya6gczb
use this

du | sort -nr | cut -f2- | xargs du -hs

Login / Signup to Answer the Question.