du命令是disk usage的缩写,打印文件或目录使用的磁盘空间量估算。这对于查找占用大量磁盘空间的文件和目录非常有用。

du命令的默认行为是打印文件目录占用的磁盘空间,而不是真是的文件大小。要打印文件目录真实大小,请使用du命令--apparent-size选项。

要理解这一点请先阅读我们教程什么是inode。然后理解这句话:如果磁盘的分区的块大小4096字节,那么即使文件没有4096字节的大小也会占用一个块的大小。

什么是inode | myfreax
文件储存在硬盘上,硬盘的最小存储单位叫做扇区Sector

du 命令查看目录文件夹大小

要打印指定目录的总大小,而不打印子目录和文件的大小,请使用du命令-s选项。

例如命令sudo du -sh /var命令仅打印/var目录的大小,其子目录与文件将不会打印。

du命令默认使用千字节的单位打印文件目录的大小,在这里我们组合使用du命令的-h选项自动根据文件大小选择合适的大小单位打印目录文件夹的大小。

sudo du -sh /var
46G	/var

du 命令统计多个目录总大小

du命令的-c选项可以合并多个目录的总大小,当您要获取两个或多个目录的合并后的总大小时,此选项非常有用。

例如命令sudo du -csh /var/log /var/lib将会打印/var/lib/var/log两个目录大小和合并后的大小。

你可能看到du命令还组合使用-s选项,因为仅需要打印指定目录大小,所以不需要打印子目录文件大小,-h 表示以友好的阅读格式打印总大小。

sudo du -csh /var/log /var/lib
837M	/var/log
3.1G	/var/lib
3.9G	total

du 命令使用通配符指定多个文件目录

du命令还允许您使用通配符模式,同时指定多个文件目录统计大小。这在统计指定文件类型,匹配文件目录名称时非常有用。

例如命令sudo du -csh ~/Do*打印家目录中以Do开头的所有目录的大小。通常是/home/myfreax/Documents/home/linux/Downloads目录的大小。

sudo du -csh ~/Do*
4.0K	/home/myfreax/Documents
2.0G	/home/myfreax/Downloads
2.0G	total

du 命令指定目录深度级别

默认情况下,du命令将会递归遍历指定目录的所有子目录,然后以千字节打印文件目录的大小。

如果要打印指定目录深度级别的目录大小,请使用du命令的--max-depth选项并指定子目录级别。

例如命令sudo du -h --max-depth=1 /var/lib仅打印/var/lib下第一级目录的总大小。

sudo du -h --max-depth=1 /var/lib
...
544K	/var/lib/usbutils
4.0K	/var/lib/acpi-support
205M	/var/lib/apt
2.9G	/var/lib