Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Looking for a series of commands that will show me the largest files on a drive.

share|improve this question
    
Would something graphical be fine? –  RolandiXor Apr 20 '11 at 14:04
3  
nope, running on command line over ssh. –  Ryan Detzel Apr 20 '11 at 14:09
    
What's odd is I have two servers that are running the same thing. One is at 50% disk usage and the other is 99%. I can't find what's causing this. –  Ryan Detzel Apr 20 '11 at 14:17
    
So I'm confused, it says 98% used with du but when I run the gt5 app I get: grab.by/9Vv2 –  Ryan Detzel Apr 20 '11 at 14:43

7 Answers 7

up vote 55 down vote accepted

If you just need to find large files, you can use find with the -size option. The next command will list all files larger than 10MiB (not to be confused with 10MB):

find / -size +10M -ls

If you want to find files between a certain size, you can combine it with a "size lower than" search. The next command find files between 10MiB and 12MiB:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage' lists some programs available for disk usage analysis. One application that looks very promising is gt5.

From the package description:

Years have passed and disks have become larger and larger, but even on this incredibly huge harddisk era, the space seems to disappear over time. This small and effective programs provides more convenient listing than the default du(1). It displays what has happened since last run and displays dir size and the total percentage. It is possible to navigate and ascend to directories by using cursor-keys with text based browser (links, elinks, lynx etc.)

Screenshot of gt5

On the "related packages" section of gt5, I found ncdu. From its package description:

Ncdu is a ncurses-based du viewer. It provides a fast and easy-to-use interface through famous du utility. It allows to browse through the directories and show percentages of disk usage with ncurses library.

Screenshot of ncdu

share|improve this answer
8  
Thanks for ncdu. I finf it very useful :-) –  Maksym Kozlenko Oct 19 '12 at 11:32

I just use a combination of du and sort.

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

Then it's a case of rinse and repeat. Target the subdirectories you think are too big, run the command for them and you find out what's causing the problem.

Note: I use du's -x flag to keep things limited to one filesystem (I have quite a complicated arrangement of cross-mounted things between SSD and RAID5).

Note 2: 2>/dev/null redirects any error messages into oblivion. If they don't bother you, it's not obligatory.

share|improve this answer

This seems like the perfect application for find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

This command will find all files in directory $DIRECTORY and execute ls -s on them. The last command prints the allocated size of a file plus the filename. The result is sorted numerically and and the last five entries are shown. So as result you'll see the largest 5 files in $DIRETORY or any subdirectory. If you enter tail -n 1 you'll see only the largest file.

Furthermore you can play around a lot with find. For instance you can look for files which are younger than n days (-ctime -n) or which belong to special users (-user johndoe).

share|improve this answer

qbi's answer is correct but it will be very slow when there are a lot of files since it will start a new ls process for each item.

a much faster version using find without spawning child processes would be to use printf to print the size in bytes (%s) and the path (%p)

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries

share|improve this answer

Try Baobab, it gives you a graphical overview of files and folders, you can see where the real space hogs are and delete them with one click https://help.ubuntu.com/community/Baobab

share|improve this answer
2  
In this particular question, the OP prefers a command line method. See the comments to the question. I'll edit the question as well. –  user25656 Jan 29 '13 at 12:10

To find all GB files for instance I would use du and grep, though the other methods mentioned here seem great as well.

du -h -a /dir | grep "[0-9]G\b"

You can also get fancy with the --except option that du has.

share|improve this answer

blanktest - Empty folder

test - folder to be deleted

rsync -a --delete blanktest/ test/
share|improve this answer
1  
rsync is a tool for synchronizing the contents of folders on different hosts. Are you sure it can be applied for the purpose of the OP? Please edit your answer to elaborate. –  hmayag May 22 at 11:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.