Linux获取目录/文件夹大小

使用ls命令列出目录的内容时,您可能已经注意到目录的大小几乎总是4096字节4 KB

3 min read
By myfreax
Linux获取目录/文件夹大小

使用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选项。文件的表观大小是应用程序认为文件存在的字节数。

当您通过SCPRsyncSFTP传输文件或者目录时,将通过网络传输的文件大小就是文件的表观大小。这就是为什么用du显示的大小与表观大小不同的原因。

du命令还可以与管道的其他命令组合使用。例如,要打印目录中的5个最大的目录,您可以将du命令的标准输出通过管道传递到sort命令。

以按其大小对目录进行排序,然后将sort命令的标准输出通过管道传递到head命令仅打印前5个目录的大小。

sudo du -h /var/ | sort -rh | head -5

在Linux中,您可以使用du命令获取目录的大小。如果您有任何问题或意见,请在下面留言。