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

Cool thanks