du (disk usage) 命令用于显示文件和目录的磁盘使用情况,它的单位主要分为两种:标准单位 和 人类可读单位。

标准单位 (默认单位)
在不使用任何选项的情况下,du 命令默认使用 块 作为单位。
- 单位名称:
blocks(块) - 大小: 1 block = 1024 字节 (即 1 KB)
- 如何识别: 在
du的输出中,数字后面没有单位后缀,或者在一些系统上会显示为K(但这里的K指的是 1024 字节的块,而不是我们通常理解的 KB)。
示例:
# 查看 /etc 目录的磁盘使用情况 $ du /etc 124 /etc/fonts 8 /etc/initramfs-tools ... 30528 /etc
这里的 30528 指的是 /etc 目录总共占用了 30528 个 block,换算成字节就是:
30528 * 1024 = 31,260,672 字节,约等于 29.8 MB。
这种单位对于人类来说不够直观,因为我们需要自己进行换算,在大多数情况下,我们会使用 -h 选项。

人类可读单位
这是最常用、最推荐的用法,因为它将数字转换成了我们更熟悉的格式。
-h (human-readable) 选项
-h 选项让 du 以人类可读的格式显示大小,它会自动选择最合适的单位(B, K, M, G, T, P, E)。
- 单位换算: 基于二进制前缀,即 1024 进制。
- B: Bytes (字节)
- K: Kilobytes (KB) = 1024 B
- M: Megabytes (MB) = 1024 K
- G: Gigabytes (GB) = 1024 M
- T: Terabytes (TB) = 1024 G
- P: Petabytes (PB) = 1024 T
- E: Exabytes (EB) = 1024 P
示例:
# 使用 -h 选项查看 /etc 目录 $ du -h /etc 124K /etc/fonts 8.0K /etc/initramfs-tools ... 30M /etc
现在输出非常清晰,/etc 目录占用了约 30 MB 的空间。

-H (another Human-readable) 选项
-h 和 -H 都显示人类可读的单位,但它们的计算基准不同:
-h: 使用 1024 作为基数(二进制前缀),这是最常用的。-H: 使用 1000 作为基数(十进制前缀),即 1K = 1000, 1M = 1000K, 1G = 1000M。
示例对比:
假设一个文件大小为 1500 字节。
# 使用 -h (1024为基数) $ du -h file.txt 1.5K file.txt # 1500 / 1024 ≈ 1.46K,显示为 1.5K # 使用 -H (1000为基数) $ du -H file.txt 1.5K file.txt # 1500 / 1000 = 1.5K
在绝大多数日常使用场景中,-h 是更标准的选择。
其他相关单位选项
除了 -h 和 -H,还有一些选项可以强制指定单位。
| 选项 | 单位 | 换算基数 | 说明 |
|---|---|---|---|
-k |
KB | 1024 | 强制以 KB 为单位显示,相当于 du --block-size=K |
-m |
MB | 1024 | 强制以 MB 为单位显示,相当于 du --block-size=M |
--block-size=SIZE |
自定义 | 任意 | 这是一个更强大的选项,可以指定块的大小。--block-size=512 表示每个块为 512 字节。 |
示例:
# 强制以 MB 为单位显示 $ du -m /home 258 /home # 这表示 /home 目录占用了 258 MB 的空间。 # 使用 --block-size 指定块大小为 1KB (和 -k 效果一样) $ du --block-size=K /var/log 45K /var/log/wtmp 12K /var/log/apt ...
总结与推荐
| 选项 | 单位 | 使用场景 | 推荐度 |
|---|---|---|---|
| (无选项) | Blocks (1024字节) | 脚本编程、需要精确块数时 | ⭐⭐ |
-h |
人类可读 (B, K, M, G...) | 日常查看、交互式操作 | ⭐⭐⭐⭐⭐ (最常用) |
-H |
人类可读 (B, K, M, G... 1000进制) | 特殊需求,如符合某些行业标准 | ⭐⭐ |
-k |
KB | 需要固定以 KB 为单位时 | ⭐⭐⭐ |
-m |
MB | 需要固定以 MB 为单位时 | ⭐⭐⭐ |
核心建议:
在绝大多数情况下,直接使用
du -h是最简单、最直观、最不容易出错的选择。
实用技巧:
通常我们会将 du 和 sort 命令结合使用,以便按大小排序。
# 查看当前目录下所有子目录的大小,并从大到小排序 $ du -h --max-depth=1 | sort -hr 4.0K ./docs 2.1M ./Downloads 15M ./Pictures ...
--max-depth=1: 只显示当前目录下一级子目录的大小,避免输出过于冗长。sort -h: 对人类可读的数字进行排序。sort -r: 反向排序(默认是从小到大,-r让它从大到小)。
