1. 命令概述
- 命令名称:
du(英文全拼:disk usage) - 核心功能:显示文件或目录的磁盘使用情况
- 主要用途:查看文件和目录占用的磁盘空间大小
- 特点:显示磁盘使用量,支持递归计算、排序、过滤等功能
2. 语法格式
du [选项] [文件或目录]
3. 常用选项
| 选项 | 说明 |
|---|---|
-h | 以人类可读的格式显示(KB、MB、GB) |
-s | 显示总计,不显示子目录 |
-c | 显示总计,并在最后显示总计行 |
-a | 显示所有文件和目录的磁盘使用情况 |
-d | 指定显示目录深度 |
--max-depth=N | 指定显示目录深度 |
-b | 以字节为单位显示 |
-k | 以KB为单位显示 |
-m | 以MB为单位显示 |
-x | 跳过不同文件系统上的目录 |
--exclude=PATTERN | 排除匹配模式的文件 |
--time | 显示文件或目录的修改时间 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 基本操作
(1) 基本磁盘使用查看
# 显示当前目录的磁盘使用情况
du
# 以人类可读格式显示
du -h
# 显示总计大小
du -s
# 显示总计并以人类可读格式显示
du -sh
# 显示总计并在最后显示总计行
du -c
# 显示所有文件和目录
du -a
# 显示所有文件并以人类可读格式显示
du -ah
(2) 指定目录深度
# 显示当前目录下第一级子目录的大小
du -h --max-depth=1
# 显示当前目录下第二级子目录的大小
du -h --max-depth=2
# 显示指定目录下第一级子目录的大小
du -h --max-depth=1 /path/to/dir
# 显示指定目录下所有子目录的大小
du -h --max-depth=0 /path/to/dir
# 显示指定目录下所有文件和子目录的大小
du -h --max-depth=1 /path/to/dir
(3) 指定单位显示
# 以字节为单位显示
du -b
# 以KB为单位显示
du -k
# 以MB为单位显示
du -m
# 以GB为单位显示
du -h
# 以人类可读格式显示总计
du -sh
# 以人类可读格式显示所有文件
du -ah
(4) 过滤和排除
# 排除指定模式的文件
du -h --exclude="*.log"
# 排除多个模式的文件
du -h --exclude="*.log" --exclude="*.tmp"
# 排除目录
du -h --exclude="dir"
# 排除多个目录
du -h --exclude="dir1" --exclude="dir2"
# 排除隐藏文件
du -h --exclude=".*"
5. 常用实例详解
(1) 基本磁盘使用查看示例
# 显示当前目录的磁盘使用情况
du
# 输出:
# 4 ./dir1
# 8 ./dir2
# 12 .
# 以人类可读格式显示
du -h
# 输出:
# 4.0K ./dir1
# 8.0K ./dir2
# 12K .
# 显示总计大小
du -s
# 输出:12
# 显示总计并以人类可读格式显示
du -sh
# 输出:12K
# 显示总计并在最后显示总计行
du -c
# 输出:
# 4 ./dir1
# 8 ./dir2
# 12 .
# 12 total
# 显示所有文件和目录
du -a
# 输出:
# 4 ./dir1/file1.txt
# 4 ./dir1
# 8 ./dir2/file2.txt
# 8 ./dir2
# 12 .
(2) 指定目录深度示例
# 显示当前目录下第一级子目录的大小
du -h --max-depth=1
# 输出:
# 4.0K ./dir1
# 8.0K ./dir2
# 12K .
# 显示当前目录下第二级子目录的大小
du -h --max-depth=2
# 输出:
# 4.0K ./dir1/file1.txt
# 4.0K ./dir1
# 8.0K ./dir2/file2.txt
# 8.0K ./dir2
# 12K .
# 显示指定目录下第一级子目录的大小
du -h --max-depth=1 /home/user
# 输出:
# 4.0K /home/user/dir1
# 8.0K /home/user/dir2
# 12K /home/user
# 显示指定目录下所有子目录的大小
du -h --max-depth=0 /home/user
# 输出:12K /home/user
# 显示指定目录下所有文件和子目录的大小
du -h --max-depth=1 /home/user
# 输出:
# 4.0K /home/user/dir1
# 8.0K /home/user/dir2
# 12K /home/user
(3) 指定单位显示示例
# 以字节为单位显示
du -b
# 输出:
# 4096 ./dir1
# 8192 ./dir2
# 12288 .
# 以KB为单位显示
du -k
# 输出:
# 4 ./dir1
# 8 ./dir2
# 12 .
# 以MB为单位显示
du -m
# 输出:
# 0 ./dir1
# 0 ./dir2
# 0 .
# 以GB为单位显示
du -h
# 输出:
# 4.0K ./dir1
# 8.0K ./dir2
# 12K .
# 以人类可读格式显示总计
du -sh
# 输出:12K
# 以人类可读格式显示所有文件
du -ah
# 输出:
# 4.0K ./dir1/file1.txt
# 4.0K ./dir1
# 8.0K ./dir2/file2.txt
# 8.0K ./dir2
# 12K .
(4) 过滤和排除示例
# 排除指定模式的文件
du -h --exclude="*.log"
# 输出:不显示.log文件
# 排除多个模式的文件
du -h --exclude="*.log" --exclude="*.tmp"
# 输出:不显示.log和.tmp文件
# 排除目录
du -h --exclude="dir1"
# 输出:不显示dir1目录
# 排除多个目录
du -h --exclude="dir1" --exclude="dir2"
# 输出:不显示dir1和dir2目录
# 排除隐藏文件
du -h --exclude=".*"
# 输出:不显示隐藏文件
6. 实际应用场景
场景一:磁盘空间分析
# 查看当前目录下各子目录的大小
du -h --max-depth=1
# 查看指定目录下各子目录的大小
du -h --max-depth=1 /path/to/dir
# 查看当前目录下所有文件的大小
du -ah
# 查看指定目录下所有文件的大小
du -ah /path/to/dir
# 查看当前目录的总大小
du -sh
# 查看指定目录的总大小
du -sh /path/to/dir
场景二:大文件查找
# 查找当前目录下大于100M的文件
du -ah | grep -E "[0-9]+M" | sort -rh | head -10
# 查找当前目录下大于1G的文件
du -ah | grep -E "[0-9]+G" | sort -rh | head -10
# 查找指定目录下大于100M的文件
du -ah /path/to/dir | grep -E "[0-9]+M" | sort -rh | head -10
# 查找当前目录下大于100M的文件并排序
du -ah | sort -rh | grep -E "[0-9]+M" | head -10
# 查找当前目录下大于100M的文件并显示路径
du -ah | grep -E "[0-9]+M" | sort -rh | head -10 | awk '{print $2}'
场景三:磁盘空间清理
# 查看当前目录下各子目录的大小并排序
du -h --max-depth=1 | sort -rh
# 查看当前目录下所有文件的大小并排序
du -ah | sort -rh
# 查看当前目录下大于100M的文件并排序
du -ah | grep -E "[0-9]+M" | sort -rh
# 查看当前目录下大于1G的文件并排序
du -ah | grep -E "[0-9]+G" | sort -rh
# 查看当前目录下大于100M的文件并删除
du -ah | grep -E "[0-9]+M" | sort -rh | head -10 | awk '{print $2}' | xargs rm -rf
场景四:磁盘空间监控
# 监控当前目录的大小
du -sh
# 监控指定目录的大小
du -sh /path/to/dir
# 监控当前目录下各子目录的大小
du -h --max-depth=1
# 监控指定目录下各子目录的大小
du -h --max-depth=1 /path/to/dir
# 监控当前目录下所有文件的大小
du -ah
# 监控指定目录下所有文件的大小
du -ah /path/to/dir
7. 与其他命令的区别
| 命令 | 特点 | 适用场景 |
|---|---|---|
du | 显示文件或目录的磁盘使用情况 | 查看文件和目录大小 |
df | 显示文件系统的磁盘空间使用情况 | 查看磁盘空间占用 |
ls | 列出目录内容 | 查看文件列表 |
find | 查找文件 | 查找指定条件的文件 |
sort | 排序 | 对输出进行排序 |
8. 注意事项
- 权限问题:普通用户只能查看有权限的文件和目录
- 符号链接:默认显示符号链接指向的文件大小,使用
-L选项显示符号链接本身大小 - 递归深度:使用
--max-depth选项控制递归深度 - 单位显示:使用
-h选项以人类可读格式显示 - 总计显示:使用
-s选项显示总计,使用-c选项显示总计行
9. 常见问题解决
(1) 权限不足
# 错误:权限不足
du /root # 报错:Permission denied
# 正确:使用sudo
sudo du /root
# 正确:查看有权限的目录
du /home
# 正确:查看当前用户的主目录
du ~
# 正确:查看公共目录
du /tmp
(2) 文件或目录不存在
# 错误:文件或目录不存在
du /nonexistent # 报错:No such file or directory
# 正确:检查文件或目录是否存在
ls -d /path/to/dir
# 正确:使用存在的目录
du /home
# 正确:使用当前目录
du .
# 正确:使用根目录
du /
(3) 选项错误
# 错误:选项错误
du -x # 报错:缺少参数
# 正确:指定文件系统类型
du -x /path/to/dir
# 错误:目录深度错误
du --max-depth # 报错:缺少参数
# 正确:指定目录深度
du --max-depth=1
# 错误:排除模式错误
du --exclude # 报错:缺少参数
# 正确:指定排除模式
du --exclude="*.log"
(4) 输出格式问题
# 错误:输出格式不友好
du # 以块为单位显示
# 正确:使用人类可读格式
du -h
# 错误:缺少总计信息
du # 不显示总计
# 正确:显示总计
du -s
# 错误:缺少总计行
du -s # 不显示总计行
# 正确:显示总计行
du -c
# 错误:缺少所有文件信息
du # 不显示所有文件
# 正确:显示所有文件
du -a
核心要点总结:
du是显示文件或目录磁盘使用情况的命令,用于查看文件和目录的大小- 常用选项:
-h(人类可读格式)、-s(显示总计)、-c(显示总计行)、-a(显示所有文件)、--max-depth=N(指定目录深度) - 实际应用:磁盘空间分析、大文件查找、磁盘空间清理、磁盘空间监控
- 注意事项:普通用户只能查看有权限的文件和目录,使用
-h选项以人类可读格式显示
du命令是Linux系统磁盘空间管理的基础工具,熟练掌握可以大大提高系统管理效率。