DU(1) User Commands DU(1)

# [NAME](#NAME)

du - estimate file space usage

# [SYNOPSIS](#SYNOPSIS)

**du** \[*OPTION*]... \[*FILE*]...  
**du** \[*OPTION*]... *--files0-from=F*

# [DESCRIPTION](#DESCRIPTION)

Summarize device usage of the set of FILEs, recursively for directories.

Mandatory arguments to long options are mandatory for short options too.

**-0, --null**

end each output line with NUL, not newline

[**-a, --all**](#a,)

write counts for all files, not just directories

[**-A, --apparent-size**](#A,)

print apparent sizes rather than device usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, etc.

[**-B, --block-size=SIZE**](#B,)

scale sizes by SIZE before printing them; See SIZE format below; E.g., '-BM' prints sizes in units of 1,048,576 bytes

[**-b, --bytes**](#b,)

equivalent to '--apparent-size **--block-size**=*1'*

[**-c, --total**](#c,)

produce a grand total

[**-D, --dereference-args**](#D,)

dereference only symlinks that are listed on the command line

[**-d, --max-depth=N**](#d,)

print 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**

[**--files0-from=F**](#files0)

summarize device usage of the NUL-terminated file names specified in file F; if F is -, read names from standard input

[**-H**](#H)

equivalent to **--dereference-args** (**-D**)

[**-h, --human-readable**](#h,)

print sizes in human readable format (e.g., 1K 234M 2G)

[**--inodes**](#inodes)

list inode usage information instead of block usage

[**-k**](#k)

like **--block-size**=*1K*

[**-L, --dereference**](#L,)

dereference all symbolic links

[**-l, --count-links**](#l,)

count sizes many times if hard linked

[**-m**](#m)

like **--block-size**=*1M*

[**-P, --no-dereference**](#P,)

don't follow any symbolic links (this is the default)

[**-S, --separate-dirs**](#S,)

for directories do not include size of subdirectories

[**--si**](#si)

like **-h**, but use powers of 1000 not 1024

[**-s, --summarize**](#s,)

display only a total for each argument

[**-t, --threshold=SIZE**](#t,)

exclude entries smaller than SIZE if positive, or entries greater than SIZE if negative

[**--time**](#time)

show time of the last modification of any file in the directory, or any of its subdirectories

[**--time=WORD**](#time=WORD)

show time as WORD instead of modification time: atime, access, use, ctime or status

[**--time-style=STYLE**](#time~2)

time/date format with **--time**; see TIME\_STYLE below

[**-X, --exclude-from=FILE**](#X,)

exclude files that match any pattern in FILE

[**--exclude=PATTERN**](#exclude=PATTERN)

exclude files that match PATTERN

[**-x, --one-file-system**](#x,)

skip directories on different file systems

[**--help**](#help)

display this help and exit

[**--version**](#version)

output version information and exit

Display values are in units of the first available SIZE from **--block-size**, and the DU\_BLOCK\_SIZE, BLOCK\_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY\_CORRECT is set).

The SIZE argument is an integer and optional unit (example: 10K is 10\*1024). Units are K,M,G,T,P,E,Z,Y,R,Q (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on.

The **--time-style** STYLE argument can be full-iso, long-iso, iso, or +FORMAT. FORMAT is interpreted like in [**date**(1)](/man/os/coreutils/date.1). Also the TIME\_STYLE environment variable sets the default style to use.

# [PATTERNS](#PATTERNS)

PATTERN is a shell pattern (not a regular expression). The pattern **?** matches any one character, whereas **\*** matches any string (composed of zero, one or multiple characters). For example, **\*.o** will match any files whose names end in **.o**. Therefore, the command

**du --exclude='\*.o'**

will skip all files and subdirectories ending in **.o** (including the file **.o** itself).

# [AUTHOR](#AUTHOR)

Written by Torbjorn Granlund, David MacKenzie, Paul Eggert, and Jim Meyering.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to: &lt;bug-coreutils@gnu.org&gt;.  
Report any translation bugs to: &lt;https://translationproject.org/team/&gt;.  
GNU coreutils home page: &lt;https://www.gnu.org/software/coreutils/&gt;  
General help using GNU software: &lt;https://www.gnu.org/gethelp/&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;https://gnu.org/licenses/gpl.html&gt;.  
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

# [SEE ALSO](#SEE_ALSO)

Full documentation &lt;https://www.gnu.org/software/coreutils/du&gt;  
or available locally via: info '(coreutils) du invocation'

October 2026 GNU coreutils 9.12

---

Document: du(1) from coreutils 9.12-r6 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/coreutils.git
