1.命令作用
对每个文件的磁盘使用情况进行汇总,对于目录则进行递归汇总(Summarize disk usage of each FILE, recursively for directories);即输出文件占用磁盘空间的大小,和输出目录递归占用磁盘空间的大小;与文件/目录实际大小由一定的区别,参考"参数详解"的--apparent-size参数说明
2.命令语法
Usage: du [OPTION]... [FILE | DIRECTORY]...
or: du [OPTION]... --files0-from=F
3.参数详解
OPTION:
- -0, --null,输出每行末尾以0字节结束,而非换行符结束;即所有信息一行输出不换行
- -a, --all,du是递归查看当前目录下所有目录大小,-a则会递归查看当前目录下所有目录及文件大小
- --apparent-size,打印的是文件的大小,而非磁盘使用量;尽管显示大小通常会较小,但有时也可能较大,这是因为存在"稀疏"文件中的空洞、内部碎片、间接块等情况所致
- -B, --block-size=SIZE,根据SIZE大小对系统空间进行缩放;SIZE是整数且可带单位;单位K、M、G、T、P、E、Z、Y是以1024为进率计算;KB、MB、...是以1000进率计算)
- -b, --bytes,相当于'--apparent-size --block-size=1'
- -c, --total,多打印一行total,用于统计查询文件和目录的总大小
- -D, --dereference-args,显示符号链接实际指向的文件/目录大小,默认符号链接大小为0
- -d, --max-depth=N,打印目录(或用--all包含文件)递归N层的总大小;--max-depth=0与指定-s参数含义相同;注意N最好不要大于指定递归目录的总层数
- --files0-from=F/-,F代表一个文件名,F文件内是^@分隔且无换行符的文件目录列表,用于统计文件目录列表大小信息;当使用 - 时,读取标准输出列表作为输入以列表大小信息
- -H,等同于-D(--dereference-args)
- -h, --human-readable,以人类可读的格式打印大小(如: 1K 234M 2G)
- --inodes,列出inode(索引节点)使用信息,而不是块使用情况;即统计文件或者目录占用多少个inode
- -k,--block-size=1K的简写
- -L, --dereference,统计符号链接(软链接)实际指向文件目录的大小
- -l, --count-links,目录下如果存在硬链接及其源文件,目录统计时会多次(两次)计算大小,如果不指定-l参数,则计算一次
- -m,--block-size=1M的简写
- -P, --no-dereference,符号链接(软链接)统计大小为0(默认),与-L相反
- -S, --separate-dirs,对于目录而言,不包括子目录的大小信息(测试与默认效果相同)
- --si,同-h,但以1000作为进率计算,-h是以1024为进率计算
- -s, --summarize,仅显示每个参数的总和值;目录统计时仅显示指定最外层目录大小
- -t, --threshold=SIZE,如为正则排除小于等于SIZE的条目;如为负则排除大于SIZE的条目
- --time,显示该目录中任何文件或其任何子目录的最后修改时间
- --time=WORD,指定WORD作为显示的时间,默认是修改时间(modification time: 文件内容变动更新);WORD可取值atime(访问时间), access(访问时间: 文件读取更新), use(访问时间,与atime、access三者等效), ctime(变更时间: 元数据变动更新,如权限和用户组), status(权限变更时间)
- --time-style=STYLE,使用STYLE显示时间, 可取值由full-iso, long-iso, iso, +FORMAT(自定义时间字符串)
- -X, --exclude-from=FILE,排除与FILE中任何模式匹配的文件
- --exclude=PATTERN,排除匹配PATTERN的文件
- -x, --one-file-system,跳过不同文件系统中的目录
- --help,显示此帮助并退出
- --version,输出版本信息并退出
4.常用用例
4.1.磁盘使用量与文件大小的区别
文件占用磁盘使用量: 文件在磁盘上实际占用的存储空间
文件大小: 文件内容实际的字节数
区别: 磁盘存储文件时按固定大小的簇(Cluster)分配空间(如4KB),而不是逐字节分配;所以占用磁盘空间大小总是4KB的倍数,而文件实际大小可能会小于、等于、大于该值
小于: 分配的簇未写满
等于: 分配的簇刚好写满
大于: 稀疏文件或压缩技术导致
[root@node4 ~]# du nmon # nmon文件占用磁盘空间大小
404 nmon
[root@node4 ~]# du --apparent-size nmon # nmon文件大小
401 nmon
[root@node4 ~]#
4.2.人类可读格式显示占用大小
[root@node4 ~]# du -h nmon # 查看文件占用磁盘空间大小(-h可读格式显示单位)
404K nmon
[root@node4 ~]# du -h Desktop/ # 查看目录占用磁盘空间大小(-h可读格式显示单位)
56K Desktop/other
193M Desktop/
[root@node4 ~]#
注:查看目录占用磁盘空间时,会显示指定目录下递归的所有目录大小,但不会显示目录下文件的大小,如需要显示文件大小需要指定--all参数,如下:
[root@node4 ~]# du --all -h Desktop/
[root@node4 ~]# du --all -h Desktop/
28K Desktop/other/odb64luo_20240226_1.sh
28K Desktop/other/odb64luo_20240226.sh
56K Desktop/other
1.5M Desktop/openssl11-libs-1.1.1k-4.el7.x86_64.rpm
292K Desktop/libzstd-1.5.4-1.el7.x86_64.rpm
1.6M Desktop/openssl11-1.1.1m-1.el7.x86_64.rpm
4.0K Desktop/flist.txt
13M Desktop/test1.txt
30M Desktop/test2.txt
47M Desktop/
[root@node4 ~]#
注: 查看目录占用磁盘空间时,如果存在多层目录,会显示多条记录,如只需要指定目录大小需要指定-s或者--max-depth=0参数,如:
[root@node4 ~]# du -sh Desktop/
193M Desktop/
[root@node4 ~]# du -h --max-depth=0 Desktop/
193M Desktop/
[root@node4 ~]#
4.3.指定单位显示占用大小
注:-h可读格式可用提供显示大小单位外,-B可用指定固定单位,默认单位为K,建议使用—h参数来智能显示单位
[root@node4 ~]# du -s Desktop/
197504 Desktop/
[root@node4 ~]# du -s -B K Desktop/
197504K Desktop/
[root@node4 ~]# du -s -B M Desktop/
193M Desktop/
[root@node4 ~]# du -s -B G Desktop/
1G Desktop/
[root@node4 ~]#
4.4.符号链接占用大小查看
4.4.1.软链接
[root@node4 ~]# ll ln_nmon nmon
lrwxrwxrwx 1 root root 4 Aug 3 18:02 ln_nmon -> nmon
-rwxr----- 3 root root 410008 Aug 1 22:46 nmon
[root@node4 ~]# du -h nmon # 软链接源文件大小404K
404K nmon
[root@node4 ~]# du -h ln_nmon # 默认情况下软链接大小0
0 ln_nmon
[root@node4 ~]#
[root@node4 ~]# du -h -L nmon # 显示软链接源文件占用磁盘空间大小
404K nmon
[root@node4 ~]# du -h -D nmon # 显示软链接源文件占用磁盘空间大小
404K nmon
[root@node4 ~]# du -h -H nmon # 显示软链接源文件占用磁盘空间大小
404K nmon
[root@node4 ~]#
4.4.2.硬链接
[root@node4 ~]# ll test
total 808
-rwxr----- 2 root root 410008 Aug 3 19:00 nmon
-rwxr----- 2 root root 410008 Aug 3 19:00 yln_nmon
[root@node4 ~]# du -h test/nmon
404K test/nmon
[root@node4 ~]# du -h test/yln_nmon
404K test/yln_nmon
[root@node4 ~]# du -h -L test/yln_nmon
404K test/yln_nmon
[root@node4 ~]# du -h -D test/yln_nmon
404K test/yln_nmon
[root@node4 ~]# du -h -H test/yln_nmon
404K test/yln_nmon
[root@node4 ~]# # 以上支持查文件,硬链接占用磁盘空间大小都会显示
[root@node4 ~]# du -h test # 直接查询目录,默认只统计一次大小
404K test
[root@node4 ~]# du -h -l test # 指定-l参数查询目录,则会统计两次大小
808K test
[root@node4 ~]#
4.5.打印占用总计信息
注: 指定目录查询时,最后会统计目录大小与-c的total总计值大小一样;指定非目录查询时更适合使用-c参数显示total总计数值
# 最后会打印一行总计total信息,总计信息前也有一个other,两个大小一致
# 说明目录查询的时候原本就会有一个总计信息
[root@node4 Desktop]# du --all -h -c other/
28K other/odb64luo_20240226_1.sh
28K other/odb64luo_20240226.sh
56K other/
56K total
[root@node4 Desktop]#
# 直接当前目录指向,也会有当前目录的总计大小
[root@node4 other]# du --all -h
28K ./odb64luo_20240226_1.sh
28K ./odb64luo_20240226.sh
56K .
[root@node4 other]#
# 使用du -h *方式,没有目录,就不会有目录统计,更适合指定-c统计total信息
[root@node4 other]# du --all -h *
28K odb64luo_20240226_1.sh
28K odb64luo_20240226.sh
[root@node4 other]#
4.6.统计占用大于/小于等于某大小的文件
[root@node4 Desktop]# du --all -h -t 13M # 显示大于30M的文件
30M ./test2.txt
47M .
[root@node4 Desktop]#
[root@node4 Desktop]# du --all -h -t -13M # 显示小于等于30M的文件
28K ./other/odb64luo_20240226_1.sh
28K ./other/odb64luo_20240226.sh
56K ./other
1.5M ./openssl11-libs-1.1.1k-4.el7.x86_64.rpm
292K ./libzstd-1.5.4-1.el7.x86_64.rpm
1.6M ./openssl11-1.1.1m-1.el7.x86_64.rpm
4.0K ./flist.txt
13M ./test1.txt
[root@node4 Desktop]#
4.7.统计文件内(标准输入)列表空间占用大小
## --files0-from=F 参数使用
## vi打开文件如下,"^@"是一个字符,vi中输入方法为Ctrl+v,然后接着 Ctrl+@
[root@node4 ~]# vi dflist.txt # t1.txt是文件,pg是目录
t1.txt^@pg
~
~
~
~
"dflist.txt" 1L, 10C
[root@node4 ~]# cat dflist.txt
t1.txtpg
[root@node4 ~]#
[root@node4 ~]# truncate -s -1 dflist.txt # 删除文件最后一个字符(换行符)
[root@node4 ~]#
[root@node4 ~]# cat dflist.txt # 再次查看与上面对比
t1.txtpg[root@node4 ~]#
[root@node4 ~]#
[root@node4 ~]# du --files0-from=dflist.txt # 可正常指定文件统计信息
4 t1.txt
8596 pg
[root@node4 ~]#
#########################################################################
#########################################################################
## --files0-from=- 参数使用
## find中-print0参数的作用是在输出文件名时使用null字符(\0)作为分隔符,而不是换行符
[root@node4 ~]# find . -name "t[12].txt" -print0 | du --files0-from=-
4 ./t1.txt
4 ./t2.txt
[root@node4 ~]#
4.8.排除文件统计空间占用
[root@node4 Desktop]# du --all -h
30M ./test2.txt
4.0K ./flist.txt
28K ./other/odb64luo_20240226_1.sh
28K ./other/odb64luo_20240226.sh
56K ./other
1.5M ./openssl11-libs-1.1.1k-4.el7.x86_64.rpm
292K ./libzstd-1.5.4-1.el7.x86_64.rpm
1.6M ./openssl11-1.1.1m-1.el7.x86_64.rpm
34M .
[root@node4 Desktop]#
4.8.1.排除单个文件
[root@node4 Desktop]# du --all -h --exclude=libzstd-1.5.4-1.el7.x86_64.rpm
30M ./test2.txt
4.0K ./flist.txt
28K ./other/odb64luo_20240226_1.sh
28K ./other/odb64luo_20240226.sh
56K ./other
1.5M ./openssl11-libs-1.1.1k-4.el7.x86_64.rpm
1.6M ./openssl11-1.1.1m-1.el7.x86_64.rpm
33M .
[root@node4 Desktop]#
4.8.2.排除多个文件
[root@node4 Desktop]# cat flist.txt
other/odb64luo_20240226_1.sh
openssl11-libs-1.1.1k-4.el7.x86_64.rpm
test2.txt
flist.txt
[root@node4 Desktop]# du --all -h -X flist.txt
28K ./other/odb64luo_20240226.sh
28K ./other
292K ./libzstd-1.5.4-1.el7.x86_64.rpm
1.6M ./openssl11-1.1.1m-1.el7.x86_64.rpm
1.9M .
[root@node4 Desktop]#
4.9.增加时间显示列(访问时间/修改时间/变更时间)
Access(访问时间): 读取文件内容(cat、less等): 审计文件访问记录,清理长时间未读文件
Modify(修改时间): 修改文件内容(vim、echo >>等): 代码版本管理,增量备份依据
Change(变更时间): 修改文件元数据或内容(权限、所有者、链接等): 安全审计,追踪异常文件变更
[root@node4 other]# du --all --time # 增加显示修改时间列
28 2025-04-04 12:12 ./odb64luo_20240226_1.sh
28 2024-02-26 16:47 ./odb64luo_20240226.sh
56 2025-08-03 20:04 .
[root@node4 other]# du --all --time=access # 增加显示访问时间列
28 2025-04-04 12:15 ./odb64luo_20240226_1.sh
28 2025-04-03 13:42 ./odb64luo_20240226.sh
56 2025-08-03 20:05 .
[root@node4 other]# du --all --time=ctime # 增加显示更新时间列
28 2025-08-03 20:04 ./odb64luo_20240226_1.sh
28 2025-08-03 20:04 ./odb64luo_20240226.sh
56 2025-08-03 20:04 .
[root@node4 other]#
# 还可以指定时间列的时间格式
[root@node4 other]# du --all --time=ctime --time-style=iso
28 2025-08-03 ./odb64luo_20240226_1.sh
28 2025-08-03 ./odb64luo_20240226.sh
56 2025-08-03 .
[root@node4 other]# du --all --time=ctime --time-style=full-iso
28 2025-08-03 20:04:42.249452306 +0800 ./odb64luo_20240226_1.sh
28 2025-08-03 20:04:42.249452306 +0800 ./odb64luo_20240226.sh
56 2025-08-03 20:04:42.249452306 +0800 .
[root@node4 other]#
1万+

被折叠的 条评论
为什么被折叠?



