Under Linux, I'm looking for a command to list the largest file and/or the largest directories under a directory.
-
1The most useful tool I've found is xdiskusage (xdiskusage.sourceforge.net) This shows graphically where the files are - by size. Great tool! (and it works directly with X11)– jcoppensApr 20, 2015 at 21:31
-
How this is duplicated of some question which has been closed as off-topic? Doesn't make sense.– kenorbApr 20, 2015 at 22:08
-
@jcoppens Please post an answer, the tool is very good.– IacchusNov 1, 2021 at 20:30
10 Answers
From any directory:
du -a | sort -n -r
-
4this shows individual files, but the question is about directories as well– knocteFeb 7, 2017 at 6:12
-
du with no arguments summarizes disk usage by directories. du with -a produces the same directory information and includes the disk usage for individual files as well. Feb 7, 2017 at 13:47
-
2
A utility called ncdu
will give you the information you are looking for.
sudo apt-get install ncdu
On OS X, it can be installed using Homebrew:
brew install ncdu
-
2
-
1This is a much nicer solution than both of the higher answers. Jul 22, 2015 at 21:21
-
2
-
Fyi, this is an ncurses (text-based UI) application. So, no need to extensively discuss CLI parameters and whatnot; just install it and execute
ncdu
in the directory you'd like to analyze.– rinogoDec 1, 2020 at 18:19 -
On CentOS, you can use this to install a repo containing ncdu:
sudo yum install epel-release
– RocketApr 6, 2022 at 17:20
Following command shows you one level of directories and their sizes
du --max-depth=1 /path | sort -r -k1,1n
If one of them really sticks out (the last one on the list is the largest due to sort -r
), then you re-run the command on that directory, and keep going until you find the offending directory / file.
If all you want is the ten biggest files just do
find /home -type f -exec du -s {} \; | sort -r -k1,1n | head
-
biggest number ends up at the bottom for me no matter if I add
sort -r
or not. Is there a way to get the biggest number at the top? Oct 27, 2013 at 22:17 -
You must indicate to sort which column you want to sort by, and that it's numeric (not alphanumeric). That's what -k1,1rn would do. By default sort does uses alphanumeric sort on first column.– MarcinOct 28, 2013 at 12:45
-
Yes, it's sorting correctly with that, but it's in ascending order low to high numbers no matter if I include
sort
orsort -r
. Am I misunderstanding how the -r works? I guess it's not a big deal. Your example is very helpful and got me the info I needed. Oct 28, 2013 at 16:17 -
3With the
sort
I have (sort (GNU coreutils) 8.13
in Ubuntu 12.04.3) the option-r
does not work if-n
immediately follows-k
(-k1,1n
). This order of options works:sort -rnk1,1
. Dec 1, 2013 at 8:26 -
Great answer. On OS X the option is
-d 1
instead of--max-depth 1
. What is also useful is-m
which then reports in megabyte instead of block count. Apr 18, 2021 at 11:32
Following command will return top 10 biggest files from given /path
du -a -h /path | sort -h -r | head -n 10
I like to use -h
options for readability. Both du
and sort
need to have -h
.
du -sk * | sort -nr | head -1
This will show the biggest directory/file in a directory in KB. Changing the head value will result in the top x files/directories.
This post will help you well:
cd /path/to/some/where
du -a /var | sort -n -r | head -n 10
du -hsx * | sort -rh | head -10
Use
ls -A | xargs -I artifact du -ms artifact | sort -nr
Optionally, you can add a pipe and use head -5
Try the following one-liner (displays top-20 biggest files in the current directory):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
or with human readable sizes:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
The second command to work on OSX/BSD properly (as
sort
doesn't have-h
), you need to installsort
fromcoreutils
.
So these aliases are useful to have in your rc files (every time when you need it):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
du -sh /path * | sort -nr | grep G
G for GIG (to weed out smaller) files/directories
-
This lists all the files and folders, showing the size. It doesn't sort the size by the K, M or G's worth of bytes, unless you GREP it as you shown Oct 15, 2013 at 17:31
-