du utility first appeared in version 1 of AT&T UNIX.
By default, the Single Unix Specification (SUS) specifies that
du is to display the file space allocated to each file and directory contained in the current directory. Links will be displayed as the size of the link file, not what is being linked to; the size of the content of directories is displayed, as expected.
du reports allocation space and not absolute file space, the amount of space on a file system shown by
du may vary from that shown by
df if files have been deleted but their blocks not yet freed. Also the minfree setting that allocates datablocks for the filesystem and the super user processes creates a discrepancy between total blocks and the sum of used and available blocks. The minfree setting is usually set to about 5% of the total filesystem size. For more info see core utils faq.
du takes a single argument, specifying a pathname for du to work; if it is not specified, the current directory is used. The SUS mandates for du the following options:
- -a, display an entry for each file (and not directory) contained in the current directory
- -c, display a grand total of the disk usage found by the other arguments
- -d #, the depth at which summing should occur. -d 0 sums at the current level, -d 1 sums at the subdirectory, -d 2 at sub-subdirectories, etc.
- -H, calculate disk usage for link references specified on the command line
- -k, show sizes as multiples of 1024 bytes, not 512-byte
- -L, calculate disk usage for link references anywhere
- -s, report only the sum of the usage in the current directory, not for each file
- -x, only traverse files and directories on the device on which the pathname argument is specified.
Other Unix and Unix-like operating systems may add extra options. For example, BSD and GNU
du specify a -h option, displaying disk usage in a format easier to read by the user, adding units with the appropriate SI prefix (e.g. 10 MB).
Sum of directories (-s) in kilobytes (-k):
$ du -sk * 152304 directoryOne 1856548 directoryTwo
Sum of directories (-s) in human-readable format (-h : Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte):
$ du -sh * 149M directoryOne 1.8G directoryTwo
disk usage of all subdirectories and files including hidden files within the current directory (sorted by filesize) :
$ du -sk .[!.]* *| sort -n
disk usage of all subdirectories and files including hidden files within the current directory (sorted by reverse filesize) :
$ du -sk .[!.]* *| sort -nr
The weight (size) of each subdirectory under the current directory (-d 1) with a sum total at the end (-c) all displayed in human-readable format (-h):
$ du -d 1 -c -h or with du from GNU: $ du --max-depth=1 -c -h
The weight (size) of subdirectories under the root directory (-d 1, trailing /) with a sum total at the end (-c), all displayed in human-readable format (-h) without traversing into other filesystems (-x). Useful when /var /tmp or other directories are on separate storage from the root directory:
$ du -d 1 -c -h -x / or with du from GNU: $ du --max-depth=1 -c -h -x /
See also 
- The Single UNIX® Specification, Issue 7 from The Open Group : estimate file space usage – Commands & Utilities Reference,
Manual pages 
- du — manual page from GNU coreutils
- du — manual page from OpenBSD
- du — manual page from Dragonflybsd
- Disk space-related utilities at Freshmeat.net