菜鸟科技网

du 命令单位

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

du 命令单位-图1
(图片来源网络,侵删)

标准单位 (默认单位)

在不使用任何选项的情况下,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 选项。

du 命令单位-图2
(图片来源网络,侵删)

人类可读单位

这是最常用、最推荐的用法,因为它将数字转换成了我们更熟悉的格式。

-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 的空间。

du 命令单位-图3
(图片来源网络,侵删)

-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 是最简单、最直观、最不容易出错的选择。

实用技巧:

通常我们会将 dusort 命令结合使用,以便按大小排序。

# 查看当前目录下所有子目录的大小,并从大到小排序
$ du -h --max-depth=1 | sort -hr
4.0K    ./docs
2.1M    ./Downloads
15M     ./Pictures
...
  • --max-depth=1: 只显示当前目录下一级子目录的大小,避免输出过于冗长。
  • sort -h: 对人类可读的数字进行排序。
  • sort -r: 反向排序(默认是从小到大,-r 让它从大到小)。
分享:
扫描分享到社交APP
上一篇
下一篇