du [OPTIONs] ... [tree] ...

Summarize disk usage (of blocks) of each FILE, recursively for directories.

Comparing trees on different volumes will produce different sizes if using different allocation schemes.
--max-depth=Ndisplay the total for a directory (or file with --all) only if it is N or fewer levels below the command line argument
--max-depth=0 is the same as --summarize
-s
--summarize
display only a total for each tree
-c
--total
produce a grand total of all trees specified
-B
--block-size=SIZE
use SIZE-byte blocks

SIZE may be (or may be an integer optionally followed by)
kB 1000, K 1024, MB 1,000,000, M 1,048,576, and so on for G, T, P, E, Z, Y .

-k --block-size=1K
-b
--bytes
display size in bytes
-h
--human-readable
display print sizes in human readable format (e.g., 1K 234M 2G)
-H
--si
use powers of 1,000
-a
--all
count all files, not just directories
-l
--count-links
count sizes many times if hard linked
-D
--dereference-args
dereference FILES that are symbolic links
-L
--dereference
dereference all symbolic links
-S
--separate-dirs
do not include size of subdirectories
-x
--one-file-system
skip directories on different filesystems
-X FILE
--exclude-from=FILE
Exclude files that match any pattern in FILE.
--exclude=PATTERNExclude files that match PATTERN.
--help 
--version 

Directories are not necessarily listed in alphabetical order unless   | sort -k2   is appended to the command.

PATTERN is a shell pattern (not a regular expression).
? matches any one character,
* matches any string (composed of zero, one or multiple characters).

Example: *.o will match files ending in .o .

du --exclude='*.o'
will skip all files and subdirectories ending in .o (including the file .o ).