使用ls
命令列出目录的内容时,您可能已经注意到目录的大小几乎总是4096字节4 KB。这是磁盘上用于存储目录元信息的空间大小,而不是它包含的内容大小。
您要获取目录实际大小的命令是 du
命令,disk used
磁盘使用的缩写。du
默认不统计隐藏文件和目录的大小,即.
开头文件和目录。
du
命令显示指定文件或目录的大小。如果指定的路径是目录,du
则将计算该目录及其子目录的大小。如果未指定路径,du
则将打印当前工作目录的大小。
如果在没有任何选项的情况下运行du
,它将显示指定目录及其子目录的大小,以字节为单位。
在大多数情况下,您总是希望以友好的格式显示目录的大小。例如,要获取/var
目录的总大小。
sudo du -sh /var
命令将会目录的名称和大小,输出看起来像这样85G /var
。
这里之所以使用sudo
是因为/var
目录中的大多数文件和目录都由root用户拥有,并且普通用户无法读取。如果省略sudo
命令。du
命令将打印du:无法读取目录
。
s
仅显示指定目录的总大小,不显示子目录以及文件的大小。h
以以友好的格式显示大小。/var
是你要获取目录大小的路径。
如果要显示第一级子目录和文件的大小,您有两个选项,第一个是使用星号符号*
。
sudo du -shc /var/*
命令的*
符号将会匹配/var
目录的第一级子目录和文件并打印文件和目录的大小。在使用*
符号匹配时du
命令不统计总大小。
如果你需要各个文件和目录大小的总和,你需要使用du命令的-c
选项指示du
打印所有文件大小的总和。
获取第一级子目录和文件的大小另一种方法是使用--max-depth
选项。例如命令sudodu -h --max-depth=1 /var
。
默认情况下,du
命令显示目录或文件大小。要查找目录的表观大小,请使用--apparent-size
选项。文件的表观大小是应用程序认为文件存在的字节数。
当您通过SCP,Rsync或SFTP传输文件或者目录时,将通过网络传输的文件大小就是文件的表观大小。这就是为什么用du
显示的大小与表观大小不同的原因。
du
命令还可以与管道的其他命令组合使用。例如,要打印目录中的5个最大的目录,您可以将du
命令的标准输出通过管道传递到sort
命令。
以按其大小对目录进行排序,然后将sort命令的标准输出通过管道传递到head
命令仅打印前5个目录的大小。
sudo du -h /var/ | sort -rh | head -5
在Linux中,您可以使用du
命令获取目录的大小。如果您有任何问题或意见,请在下面留言。