du命令是Linux和Unix系统中用于估算文件和目录磁盘使用空间的实用工具,通过它可以快速了解特定目录或文件占用的存储容量,尤其在管理磁盘空间时发挥着重要作用,使用du命令查看目录时,基本语法为du [选项] [目录名],如果不指定目录,默认会显示当前目录下各子目录及文件的磁盘使用情况。

常用选项及功能
为了更精准地获取目录空间信息,du命令提供了丰富的选项,以下是常用选项的详细说明:
| 选项 | 功能描述 | 示例 |
|---|---|---|
| -h | 以人类可读格式显示(如K、M、G) | du -h /home |
| -s | 仅显示总计大小,不显示子目录详情 | du -s /var/log |
| -a | 显示所有文件的大小,不仅限于目录 | du -a /etc |
| --max-depth=N | 限制目录遍历深度(N为层级数) | du --max-depth=1 /usr |
| --exclude=模式 | 排除匹配模式的文件或目录 | du --exclude="*.log" /tmp |
| -c | 显示总计值,常与其他选项结合使用 | du -ch /opt |
实际应用场景
-
查看当前目录总占用空间
直接执行du -sh,其中-s表示汇总,-h以人类可读格式显示,例如输出可能为2G .,表示当前目录占用1.2GB空间。 -
分析指定目录的子目录空间分布
若需查看/home目录下各用户的空间占用,可使用du -sh /home/*,命令会逐个显示每个用户目录的大小,便于快速定位占用空间过大的用户。 -
排除特定文件统计空间
在清理日志文件时,可能需要排除.log文件统计剩余空间,此时用du -sh --exclude="*.log" /var/log,可避免日志文件干扰统计结果。
(图片来源网络,侵删) -
限制遍历深度提升效率
对于深层目录(如/usr),使用du -h --max-depth=1 /usr仅显示一级子目录的大小,避免遍历所有文件,提高命令执行速度。
输出结果解读
du命令的默认输出以块(block)为单位,1块通常为512字节,使用-h选项后会转换为更直观的单位:K(1024字节)、M(1024K)、G(1024M)等。du -h dir输出5M dir,表示该目录占用3.5MB空间,若需查看精确字节数,可结合-b选项(以字节为单位显示)。
注意事项
- 执行
du命令时,若目录下文件数量庞大,可能需要较长时间统计,可通过--max-depth限制范围提升效率。 - 与
df命令不同,du显示的是文件实际占用的空间,而df显示的是文件系统分区的可用空间,两者关注点不同。 - 在挂载网络文件系统(如NFS)时,
du命令的执行速度可能受网络延迟影响,建议在本地测试时优先使用小范围目录。
相关问答FAQs
Q1: du命令显示的大小为什么和文件系统管理工具(如df)不一致?
A1: du命令统计的是文件实际占用的磁盘空间(包括数据块和元数据),而df命令显示的是文件系统分区的总空间、已用空间和可用空间,两者统计维度不同,一个被删除但仍在打开状态的文件,df可能仍计入已用空间,但du不会统计,因此可能出现差异。
Q2: 如何快速找出占用空间最大的目录?
A2: 可结合du和sort命令实现,例如执行du -h --max-depth=1 /目标目录 | sort -hr,其中-hr表示按人类可读格式的数值降序排列,输出结果中最后一行即为占用空间最大的目录及其大小。

