62

Under Linux, I'm looking for a command to list the largest file and/or the largest directories under a directory.

jww
  • 11,918
  • 44
  • 119
  • 208
Eric V
  • 723
  • 1
  • 6
  • 5
  • 1
    The most useful tool I've found is xdiskusage (http://xdiskusage.sourceforge.net) This shows graphically where the files are - by size. Great tool! (and it works directly with X11) – jcoppens Apr 20 '15 at 21:31
  • How this is duplicated of some question which has been closed as off-topic? Doesn't make sense. – kenorb Apr 20 '15 at 22:08
  • @jcoppens Please post an answer, the tool is very good. – Iacchus Nov 01 '21 at 20:30

10 Answers10

88

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
Mathias Bynens
  • 2,441
  • 5
  • 31
  • 39
David Pratt
  • 981
  • 1
  • 6
  • 2
39

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
Welz
  • 207
  • 1
  • 4
  • 17
Marcin
  • 808
  • 5
  • 5
  • 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? – squarecandy Oct 27 '13 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. – Marcin Oct 28 '13 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` or `sort -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. – squarecandy Oct 28 '13 at 16:17
  • 3
    With 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`. – pabouk - Ukraine stay strong Dec 01 '13 at 08: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. – freespace Apr 18 '21 at 11:32
29

From any directory:

du -a | sort -n -r

Brent Worden
  • 438
  • 4
  • 6
7

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.

Jiang
  • 171
  • 1
  • 3
3

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.

Sridharpp
  • 39
  • 1
2

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
Matz
  • 281
  • 1
  • 4
  • 8
1

Use

ls -A | xargs -I artifact du -ms artifact | sort -nr

Optionally, you can add a pipe and use head -5

Abhishek
  • 11
  • 1
0

Use du. Try this to order the result:

du | sort -n
Heisenbug
  • 693
  • 2
  • 6
  • 14
0

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 install sort from coreutils.

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'
kenorb
  • 24,736
  • 27
  • 129
  • 199
-5
du -sh /path * | sort -nr | grep G

G for GIG (to weed out smaller) files/directories

Kevin Panko
  • 7,346
  • 22
  • 44
  • 53
hutch
  • 1