命令介绍

du 是统计目录或文件所占磁盘空间大小的命令。

需要注意的是,使用”ls -r”命令是可以看到文件的大小的。但是大家会发现,在使用”ls -r”命令査看目录大小时,目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小。

大家可以将其想象成图书馆的书籍目录和实际书籍。如果我们用”ls-l”命令査看,则只能看到这些书籍占用了 1 页纸的书籍目录,但是实际书籍到底有多少是看不到的,哪怕它堆满了几个房间。

但是我们在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。

命令格式:

du 命令的基本格式为: du [选项] [目录或文件名]

该命令常用的选项及各自的含义说明:

选项 作用 备注
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量 -
-b 列出的值以bytes为单位输出。 -
-k 以KB为单位输出,和默认不加任何选项的输出值是一样的。 -
-m 以MB为单位输出 -
-h 使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等; -
-s 统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量 -

命令实例

实例一:不加任何参数:

统计当前目录的总磁盘占用量大小,同时会统计当前目录下所有子目录的磁盘占用量大小,不统计子文件磁盘占用量的大小。默认单位为KB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@ubuntu2204-101 ~ 21:08:11]# du
4 ./test
4 ./.ssh
4 ./test1/a/b/c/d
8 ./test1/a/b/c
12 ./test1/a/b
16 ./test1/a
20 ./test1
4 ./snap/lxd/23541
4 ./snap/lxd/common
4 ./snap/lxd/22923
16 ./snap/lxd
20 ./snap
4 ./test2
20 ./etc
112 .

实例二:分别以参数 -b ,-k, -m ,-h 打印文件的大小

1
2
3
4
5
6
7
8
9
[root@ubuntu2204-101 ~ 21:15:42]# du -b /etc/passwd
1839 /etc/passwd
[root@ubuntu2204-101 ~ 21:18:09]# du -k /etc/passwd
4 /etc/passwd
[root@ubuntu2204-101 ~ 21:18:13]# du -m /etc/passwd
1 /etc/passwd
[root@ubuntu2204-101 ~ 21:18:19]# du -h /etc/passwd
4.0K /etc/passwd

实例三:统计磁盘占有量大小

参数: -s,统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量 ,通常和 -h 参数一起使用,同时使用习惯单位显示

1
2
[root@ubuntu2204-101 ~ 21:21:02]# du -sh /etc/
5.6M /etc/

实例四:显示所有文件大小

参数: -a,显示每个子文件的磁盘占用量,通常和 -h 参数一起使用,同时使用习惯单位显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@ubuntu2204-101 ~ 21:24:16]# du -ah /tmp/
4.0K /tmp/tar/shadow
4.0K /tmp/tar/test3
4.0K /tmp/tar/test1/bolt.service
8.0K /tmp/tar/test1
4.0K /tmp/tar/test2
4.0K /tmp/tar/test4/passwd
8.0K /tmp/tar/test4
32K /tmp/tar
4.0K /tmp/.font-unix
4.0K /tmp/.X11-unix
4.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-logind.service-iKusgj/tmp
8.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-logind.service-iKusgj
4.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-ModemManager.service-4gVOco/tmp
8.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-ModemManager.service-4gVOco
4.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-resolved.service-OI4Z4t/tmp
8.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-resolved.service-OI4Z4t
4.0K /tmp/.XIM-unix
4.0K /tmp/.ICE-unix
4.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-timesyncd.service-AhmpNM/tmp
8.0K /tmp/systemd-private-81d9d13cfc234c6fbef7f72e0686a31e-systemd-timesyncd.service-AhmpNM
12K /tmp/data.tar
4.0K /tmp/snap.lxd/tmp
8.0K /tmp/snap.lxd
4.0K /tmp/.Test-unix
0 /tmp/ssh-XXXXIeoya7/agent.1144
4.0K /tmp/ssh-XXXXIeoya7
112K /tmp/