我们常使用 ls
命令列出所在目录的内容,但是却不能同时查看目录中文件及文件夹的大小,要获取目录大小我们需要使用 du 命令,它是“disk usage”的缩写。
获取目录的大小
如果不指定目录, du 命令会显示当前目录下的文件或目录所占用的磁盘空间。如果指定目标路径,则会显示该目录中每个文件及子目录所占用的磁盘空间情况。
当不带任何选项时,du
以字节为单位显示给定目录及其子目录的磁盘使用情况。如果希望以人类可读的格式显示目录占用的空间情况。例如,要获取 /var
目录的总大小,可以运行以下命令:
sudo du -sh /var
输出将如下所示:
85G /var
让我们解释一下命令及其参数:
- 该命令以
sudo
开头,因为/var
目录中的大多数文件和目录都归 root 用户所有,普通用户无法读取。如果省略sudo
则du
命令将打印 “du: cannot read directory”。 s
– 只显示指定目录的总大小,不显示子目录的文件总大小。h
– 以人类可读的格式显示尺寸 (h
)。/var
– 要获取大小的目录的路径。
如果要显示一级子目录的磁盘使用情况,可以有两个选择。第一个是使用星号(*
),如下所示,意思是“匹配不以句点(.
)开头的所有内容”。-c
选项告诉 du
打印总的大小:
sudo du -shc /var/*
24K /var/db
4.0K /var/empty
4.0K /var/games
77G /var/lib
4.0K /var/local
0 /var/lock
3.3G /var/log
0 /var/mail
4.0K /var/opt
0 /var/run
196K /var/spool
28K /var/tmp
85G total
获取第一级子目录的磁盘使用情况报告的另一种方法是使用 --max-depth
选项:
sudo du -h --max-depth=1 /var
77G /var/lib
24K /var/db
4.0K /var/empty
4.0K /var/local
4.0K /var/opt
196K /var/spool
4.0K /var/games
3.3G /var/log
5.0G /var/cache
28K /var/tmp
85G /var
85G total
默认情况下,du
命令会显示目录或文件使用的磁盘空间。要查找目录的大小,请使用 --apparent-size
选项。“apparent size”是文件中实际包含的数据量。
sudo du -sh --apparent-size /var
当通过 SCP 、Rsync . 或 SFTP 传输目录时,通过网络传输的数据量就是文件的 apparent size。这就是为什么使用du
(不带 --apparent-size
)时显示的磁盘空间大小与实际大小不同的原因。
du
命令还可以与其他带有管道的命令结合使用。
例如,要打印 /var
目录中最大的 5 个目录,可以将 du
的输出通过管道传输到 sort
命令,并按目录大小对目录进行排序,然后将输出结果通过管道传输到 head
命令,然后仅打印最大的 5 个目录:
sudo du -h /var/ | sort -rh | head -5
85G /var/
77G /var/lib
75G /var/lib/libvirt/images
75G /var/lib/libvirt
5.0G /var/cache/pacman/pkg
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/wordpress/how-to-display-the-size-of-directories/