How can I display the files in a unix directory sorted by their human readable size, going from largest to smallest?
I tried
du -h | sort -V -k 1
but it does not seem to work.
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityHow can I display the files in a unix directory sorted by their human readable size, going from largest to smallest?
I tried
du -h | sort -V -k 1
but it does not seem to work.
ls(1)
/sort
:
-S sort by file size
-S
is no longer a valid sort argument at least on ubuntu. The below answer by @alex worked for me. The answer link is superuser.com/a/990437/528836.
$ 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
mine is
$ sort --version
sort (GNU coreutils) 8.12
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
ls -lh | sort -k 5hr
.
Dec 18, 2020 at 10:10
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.
I got this to work for me:
ls -l | sort -g -k 5 -r
Which (I just figured-out) is the same as:
ls -lS
Unlike ls -S
, this will properly handle sparse files:
ls -lsh | sort -n | sed 's/^[0-9 ]* //'