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.
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.
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
ls -lhS | grep -v '^d'
- if you want to exclude directories.
Feb 16, 2023 at 12:12
If you have the appropriate sort
version you may simply use:
du -h | sort -rh
mine is
$ 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
ls -lh | sort -k 5hr
.
Dec 18, 2020 at 10:10
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 ]* //'