国际访客建议访问 Primers 编程伙伴 国际版站点 > Bash 教程 > du 以获得更好的体验。

# Bash 的 du 命令

du [OPTION]... [FILE]...

!subtitle:功能

估算文件空间占用。

!subtitle:类型

可执行文件(/usr/bin/du),属于 coreutils

!subtitle:参数

  • OPTION 选项:

    • -0, --null - 以空字符(\0)作为行的结尾,而不是换行符(\n

    • -a, --all - 所有文件写入计数,而不只是目录

    • --apparent-size - 打印实际大小而非设备使用量

    • -B, --block-size=SIZE - 指定单位,例如 -B 4K 表示以 4096 字节为单位

    • -b, --bytes - 等价于 --apparent-size --block-size=1

    • -c, --total - 得出总计数据

    • -D, --dereference-args - 参数是符号链接时,查看源文件

    • -d, --max-depth=N - 查看目录下最大深度不超过 N 的文件;参数目录自身深度为 0

    • --files0-from=F - 从文件 F 中读取没有了列表,空字符(\0)分隔

    • -H - 等价于 --dereference-args

    • -h, --human-readable - 自动添加单位以便人类阅读, 1K 表示 1024 字节

    • --inodes - 列出 inode 信息而不是块占用

    • -k - 等价于 -B 1K

    • -L, --dereference - 符号链接查看源文件,而非符号链接本身

    • -l, --count-links - 硬链接多次计算大小

    • -m - 等价于 -B 1M

    • -P, --no-dereference - 符号链接查看本身,而非源文件

    • -S, --separate-dirs - 目录的大小不包括子目录的大小

    • --si - 自动添加单位以便人类阅读,1K 表示 1000 字节

    • -s, --summarize - 仅显示每个参数的总计数据

    • -t, --threshold=SIZE - 忽略小于 SIZE 的条目

    • --time - 显示文件的最后修改时间

    • --time=WORD - 显示 WORD 格式的时间:atime, access, use, ctimestatus

    • --time-style=STYLE - 显示 STYLE 风格的时间:full-iso, long-iso, iso, +FORMAT(参考 date

    • -X, --exclude-from=FILE - 排除与 FILE 文件中的模式匹配的文件

    • --exclude=PATTERN - 排除匹配模式 PATTERN 的文件

    • -x, --one-file-system - 跳过不同文件系统中的目录

    • --help - 显示帮助

    • --version - 显示版本

  • FILE - 文件列表;默认查看当前工作目录

# 示例

$ sudo du -d 1 -h .     # 当前目录,最大深度为 1
25M	./dir1
4.0K	./dir2
26M	.

# 推荐阅读

# 手册

DU(1)                            User Commands                           DU(1)

NAME
       du - estimate file space usage

SYNOPSIS
       du [OPTION]... [FILE]...
       du [OPTION]... --files0-from=F

DESCRIPTION
       Summarize  device  usage  of the set of FILEs, recursively for directo‐
       ries.

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

       -0, --null
              end each output line with NUL, not newline

       -a, --all
              write counts for all files, not just directories

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

       -B, --block-size=SIZE
              scale  sizes  by  SIZE  before printing them; e.g., '-BM' prints
              sizes in units of 1,048,576 bytes; see SIZE format below

       -b, --bytes
              equivalent to '--apparent-size --block-size=1'

       -c, --total
              produce a grand total

       -D, --dereference-args
              dereference only symlinks that are listed on the command line

       -d, --max-depth=N
              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
              summarize  device  usage of the NUL-terminated file names speci‐
              fied in file F; if F is -, then read names from standard input

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

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

       --inodes
              list inode usage information instead of block usage

       -k     like --block-size=1K

       -L, --dereference
              dereference all symbolic links

       -l, --count-links
              count sizes many times if hard linked

       -m     like --block-size=1M

       -P, --no-dereference
              don't follow any symbolic links (this is the default)

       -S, --separate-dirs
              for directories do not include size of subdirectories

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

       -s, --summarize
              display only a total for each argument

       -t, --threshold=SIZE
              exclude entries  smaller  than  SIZE  if  positive,  or  entries
              greater than SIZE if negative

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

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

       --time-style=STYLE
              show times using STYLE, which can be: full-iso,  long-iso,  iso,
              or +FORMAT; FORMAT is interpreted like in 'date'

       -X, --exclude-from=FILE
              exclude files that match any pattern in FILE

       --exclude=PATTERN
              exclude files that match PATTERN

       -x, --one-file-system
              skip directories on different file systems

       --help display this help and exit

       --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  environ‐
       ment  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.

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
       Written by Torbjorn Granlund, David MacKenzie,  Paul  Eggert,  and  Jim
       Meyering.

REPORTING BUGS
       GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
       Report any translation bugs to <https://translationproject.org/team/>

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

SEE ALSO
       Full documentation <https://www.gnu.org/software/coreutils/du>
       or available locally via: info '(coreutils) du invocation'

GNU coreutils 9.4                 April 2024                             DU(1)
本文 更新于: 2025-11-27 09:38:14 创建于: 2025-11-27 09:38:14