How can I display the files in a unix directory sorted by their human readable size, going from largest to smallest?
du -h | sort -V -k 1
but it does not seem to work.
-S sort by file size
$ ls -lhS
-l use a long listing format -h with -l, print sizes in human readable format (e.g., 1K 234M 2G) -S sort by file size
If you have the appropriate
sort version you may simply use:
du -h | sort -rh
$ sort --version sort (GNU coreutils) 8.12
du -ha | sort -h
du : estimate file disk usage.
-h : for human -a : all files
sort : sort lines of text.
-h : for human
man du; man sort for more. It works for me on ubuntu v15.
ls -S wasn't an option on the OS for me. The following worked:
ls -l | sort -k 5nr
They "key" was to specify the column to sort (get it, the "key"). Above I'm specifying
-k 5nr meaning sort on 5th column which is size (5) evaluated as a number (n) in descending order (n)
Reference sort documentation for more information
I got this to work for me:
ls -l | sort -g -k 5 -r
Which (I just figured-out) is the same as:
ls -S, this will properly handle sparse files:
ls -lsh | sort -n | sed 's/^[0-9 ]* //'