Linux ‘du’ (disk usage) command examples

Linux disk usage FAQ: How do I show disk usage information on a Unix or Linux system, such as how large a directory is?

The Unix and Linux du command shows information about “disk usage.” Whereas the df command (“disk free”) shows information about Linux filesystems, the du command shows disk usage information about only the files and directories you specify.

du example: Linux directory size

I most commonly use the du command to show Linux directory size, i.e., how large my subdirectories are, including all the files and subdirectories they contain. For example, on the Mac OS X 10.5 system (a Unix system) I'm currently working on, the following du command example displays the size of each subdirectory under my current directory:

$ du -hs *

 60K	Burn-an-ISO
1.2M	BurnFolders
4.3M	CreateAPodcast-1
2.1M	CreateAPodcast-2
 16M	CreateAPodcast-3
2.5M	Java-Mac-Jar-Bundler
1.3M	Java-on-Mac

With that command, the -h option of the du command means "human readable" (as in "show me MB and GB"), and the -s means "only show summary information". It's important to note that this command runs in real time, so for very large directories, it can be slow to return your results.

Show the size of only specified directories

Also, in that du command example, I knew that my current directory just contained the subdirectories shown, so I just issued that du command followed by the "*" wildcard character. If, in a more complicated world, I just wanted to see the size of a few subdirectories in a directory that contained many more subdirectories, I could just specify the directories of interest, like this:

$ du -hs Dir1 Dir2 Dir3

Linux du command output without the summary flag

As you can see in the following example, if I take the -s option off my du command I do indeed get much more detailed output, like this:

$ du -h *

 60K	Burn-an-ISO
376K	BurnFolders/BurnFolders
188K	BurnFolders/images
296K	BurnFolders/images-orig
1.2M	BurnFolders
568K	CreateAPodcast-1/CreateAPodcast
1.1M	CreateAPodcast-1/images/Original
2.4M	CreateAPodcast-1/images
628K	CreateAPodcast-1/L2HBackups
 28K	CreateAPodcast-1/OldCSSFiles
4.3M	CreateAPodcast-1
868K	CreateAPodcast-2/CreateAPodcast
740K	CreateAPodcast-2/images
2.1M	CreateAPodcast-2
3.8M	CreateAPodcast-3/CreateAPodcast
1.8M	CreateAPodcast-3/images/bg-track
720K	CreateAPodcast-3/images/copying
668K	CreateAPodcast-3/images/external-track
688K	CreateAPodcast-3/images/joining
828K	CreateAPodcast-3/images/new-track
1.1M	CreateAPodcast-3/images/splitting
6.0M	CreateAPodcast-3/images
1.2M	CreateAPodcast-3/images-orig/bg-track
468K	CreateAPodcast-3/images-orig/copying
444K	CreateAPodcast-3/images-orig/external-track
464K	CreateAPodcast-3/images-orig/joining
556K	CreateAPodcast-3/images-orig/new-track
768K	CreateAPodcast-3/images-orig/splitting
3.9M	CreateAPodcast-3/images-orig
 16M	CreateAPodcast-3
200K	Java-Mac-Jar-Bundler/images
676K	Java-Mac-Jar-Bundler/images copy
808K	Java-Mac-Jar-Bundler/images-old
328K	Java-Mac-Jar-Bundler/java-on-mac
2.5M	Java-Mac-Jar-Bundler
308K	Java-on-Mac/images
448K	Java-on-Mac/java-on-mac
1.3M	Java-on-Mac

I'll guess that at least 95% of the time I use the -s option, because I'm usually tracking down large directories, or I want to see the directory size before I create an archive.

One way to sort the du command output

If you're trying to find large files, sorting the output of the du command can be one approach. I find that leaving off the -h option and dealing with "block" output works better for sorting:

$ du * | sort -n

That du/sort command results in this output:

56	CreateAPodcast-1/OldCSSFiles
120	Burn-an-ISO
376	BurnFolders/images
400	Java-Mac-Jar-Bundler/images
592	BurnFolders/images-orig
616	Java-on-Mac/images
656	Java-Mac-Jar-Bundler/java-on-mac
752	BurnFolders/BurnFolders
888	CreateAPodcast-3/images-orig/external-track
896	Java-on-Mac/java-on-mac
928	CreateAPodcast-3/images-orig/joining
936	CreateAPodcast-3/images-orig/copying
1112	CreateAPodcast-3/images-orig/new-track
1136	CreateAPodcast-1/CreateAPodcast
1256	CreateAPodcast-1/L2HBackups
1336	CreateAPodcast-3/images/external-track
1352	Java-Mac-Jar-Bundler/images copy
1376	CreateAPodcast-3/images/joining
1440	CreateAPodcast-3/images/copying
1480	CreateAPodcast-2/images
1536	CreateAPodcast-3/images-orig/splitting
1616	Java-Mac-Jar-Bundler/images-old
1656	CreateAPodcast-3/images/new-track
1736	CreateAPodcast-2/CreateAPodcast
2152	CreateAPodcast-1/images/Original
2304	CreateAPodcast-3/images/splitting
2448	BurnFolders
2528	CreateAPodcast-3/images-orig/bg-track
2704	Java-on-Mac
3776	CreateAPodcast-3/images/bg-track
4208	CreateAPodcast-2
4984	CreateAPodcast-1/images
5056	Java-Mac-Jar-Bundler
7808	CreateAPodcast-3/CreateAPodcast
7944	CreateAPodcast-3/images-orig
8872	CreateAPodcast-1
12248	CreateAPodcast-3/images
32224	CreateAPodcast-3

I may not be very good at working with block size, but I can tell that the CreateAPodcast-3 folder is far and away the largest subdirectory in my current directory.

More Linux du command information

For more information on the Linux du command, you can look at the "man page" for du on your current Unix system, like this:

$ man du

I just added an online version of the Linux du man page here, so you can use that if it's easier.

Also, if you have any Linux du command examples you'd like to share, please add them to our comments section below.