du 是 Disk Usage 的缩写,用于查看目录文件(也就是 windows 中的文件夹)所占用的磁盘空间。


首先运用上一章讲到的 cd 命令进入 /usr/games 目录。接着输入 du


mateo21@mateo21-desktop:~$ cd /usr/games
mateo21@mateo21-desktop:/usr/games$ du
5732    .

由于 /usr/games 下没有子目录,所以查询结果只有一行:本目录中所有文件所占用的空间。


我们再以当前用户主目录为例,这次结果会显示当前目录中所有子目录所占磁盘空间,最后一行显示当前目录的总大小。


mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop:~$ du
400     ./.Trash
4       ./.themes
32      ./.mozilla-thunderbird/8vyw6pqo.default/Mail/Local Folders
36      ./.mozilla-thunderbird/8vyw6pqo.default/Mail
12      ./.mozilla-thunderbird/8vyw6pqo.default/US
...
...
264     ./.jedit/jars
4       ./.jedit/macros
380     ./.jedit/settings-backup
856     ./.jedit
82484   .

由于结果列表太长,这里只截取了开头和结尾部分



du -h : 以 Ko, Mo, Go 的形式显示文件大小

这里的 -h 参数与 ls 中的 -h 参数作用一模一样,都是以 K, M 为单位,更直观的显示文件大小。这种不同命令使用相同参数实现相同功能的情况在 linux 中很常见,这种设计极大的减少了记忆负担。


mateo21@mateo21-desktop:~$ du -h
400K    ./.Trash
4,0K    ./.themes
32K     ./.mozilla-thunderbird/8vyw6pqo.default/Mail/Local Folders
36K     ./.mozilla-thunderbird/8vyw6pqo.default/Mail
12K     ./.mozilla-thunderbird/8vyw6pqo.default/US
...
...
264K    ./.jedit/jars
4,0K    ./.jedit/macros
380K    ./.jedit/settings-backup
856K    ./.jedit
81M     .

对比加了 -h 参数和没加参数的最后一行,显然 81M 比 82484 好认多了。



du -a : 显示所有文件 (目录文件和普通文件)

与 ls 中一样,-a 代表所有。不同的是,ls 默认不显示隐藏文件,所以ls -a 的所有指的是包括隐藏文件。du 默认只显示目录文件,加了 -a 之后显示结果将包括目录文件和普通文件,以 /usr/games/ 为例


mateo21@mateo21-desktop:~$ cd /usr/games/
mateo21@mateo21-desktop:/usr/games$ du -ah
4.0K    ./espdiff
112K    ./gnome-mahjongg
192K    ./sol
116K    ./gnome-mines
4.0K    ./gnome-sudoku
432K    .

前面例子中,不加 -a 的情况下,由于当前目录没有子目录,所以只会显示当前目录占用空间



du -s : 只显示当前目录总体占用的空间

s 代表 summarize,用于只显示总大小,而不显示子目录的大小。以 ~ 为例


mateo21@mateo21-desktop:~$ du -sh
81M     .