目录
47. shell命令--du
功能说明
du 命令是 Linux 系统中用于检查文件和目录磁盘使用空间的工具。它可以递归地计算文件或目录的磁盘空间使用量,并显示结果。这对于理解哪些文件或目录占用了大量磁盘空间非常有用。
du 命令来自英文词组 disk usage 的缩写,其功能是查看文件或目录的大小。人们经常会把 df 和 du 命令混淆,df 是用于查看磁盘或分区使用情况的命令,而 du 命令则是用于按照指定容量单位来查看文件或目录在磁盘中的占用情况。
语法格式
du [选项]... [文件]...
SYNOPSIS
du [OPTION]... [FILE]...
du [OPTION]... --files0-from=F
选项说明
-a, --all 显示目录中个别文件的大小。包括隐藏文件(以点.开头的文件)
-B, --block-size=大小 使用指定字节数的块
-b, --bytes 显示目录或文件大小时,以byte为单位。
-c, --total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D, --dereference-args 显示指定符号链接的源文件大小。
-d, --max-depth=N 限制文件夹深度
-H, --si 与-h参数相同,但是K,M,G是以1000为换算单位。
-h, --human-readable 以K,M,G为单位,提高信息的可读性。
-k, --kilobytes 以KB(1024bytes)为单位输出。
-l, --count-links 重复计算硬件链接的文件。
-m, --megabytes 以MB为单位输出。
-L<符号链接>, --dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-P, --no-dereference 不跟随任何符号链接(默认)
-0, --null 将每个空行视作0 字节而非换行符
-S, --separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-s, --summarize 仅显示总计,只列出最后加总的值。
-x, --one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>, --exclude-from=<文件> 在<文件>指定目录或文件。
--apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大。
--files0-from=F 计算文件F中以NUL结尾的文件名对应占用的磁盘空间如果F的值是"-",则从标准输入读入文件名
--exclude=<目录或文件> 略过指定的目录或文件。
--max-depth=N 显示目录总计(与--all 一起使用计算文件)当N为指定数值时计算深度为N,等于0时等同--summarize
--si 类似-h,但在计算时使用1000 为基底而非1024
--time 显示目录或该目录子目录下所有文件的最后修改时间
--time=WORD 显示WORD时间,而非修改时间:atime,access,use,ctime 或status
--time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):full-iso,long-iso,iso,+FORMAT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实践操作
0. 环境准备
mkdir -p /test/du
cd /test/du
mkdir -p dir1/dir2/dir3
yes test |head -c 10M >dir1/dir2/file1.txt
echo test >dir1/dir2/dir3/file2.txt
tree
1. 默认显示指定目录磁盘使用情况
du dir1/
2. 以易读方式显示指定目录磁盘使用情况
du -h dir1/
3. 显示指定目录及其所有子目录的磁盘使用情况
du -a dir1/
du -ah dir1/ #查看的是文件在磁盘占用的大小,以块为单位,默认为 4K 一块,不足 4k 也按 4k 计算
ll dir1/dir2/dir3/file2.txt #不要和文件实际大小混淆了
4. 仅显示指定目录的总磁盘使用情况
du -sh dir1/
du -sh dir1/dir2/
du -sh dir1/dir2/dir3/
5. 限制目录树的最大深度
du -h --max-depth=1 dir1/
du -h --max-depth=2 dir1/