使用ls命令列出目录的内容时,您可能已经注意到目录的大小几乎总是4096字节(4 KB)。这是磁盘上用于存储目录元信息的空间大小,而不是它包含的内容。

您要获取目录实际大小的命令是 du“磁盘使用”的缩写。

获取目录的大小

du命令显示指定文件或目录使用的文件空间用量。如果指定的路径是目录,du则将汇总该目录中每个子目录的磁盘使用情况。如果未指定路径,du则将报告当前工作目录的磁盘使用情况。

如果在du没有任何选项的情况下运行,它将显示给定目录及其每个子目录的磁盘使用情况(以字节为单位)。

在大多数情况下,您希望以人类可读的格式仅显示目录占用的空间。例如,要获取/var目录的总大小,可以运行以下命令:

sudo du -sh /var

输出看起来像这样:

85G	/var

让我们解释一下命令及其参数:

  • 该命令首先是sudo因为目录中的大多数文件和目录/var都由root用户拥有,并且常规用户无法读取。如果省略sudodu命令将打印“du:无法读取目录”。
  • 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选项。文件的“表观大小”是文件中实际存在的数据量。

sudo du -sh --apparent-size /var

当您通过SCPRsyncSFTP传输目录时,将通过网络传输的数据量是文件的大小。这就是为什么当用du(而不是--apparent-size)显示使用的磁盘空间大小与目标的大小不同。

du命令还可以与管道的其他命令组合使用。

例如,要打印目录中的5个最大的目录,您可以将输出管道输出到 dusort命令,以按其大小对目录进行排序,然后将输出通过管道输出到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

结论

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

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持