安卓系统

如何在Linux中获取目录的大小

趣谈Linux操作系统----27 - - 文件系统:项目成果要归档,我们就需要档案库

趣谈Linux操作系统----27 - - 文件系统:项目成果要归档,我们就需要档案库

目录:

Anonim

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

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

获取目录的大小

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

不带任何选项调用时, du 以字节为单位显示给定目录及其每个子目录的磁盘使用情况。

通常,您希望以人类可读的格式显示目录所占用的空间。 例如,要获取 /var 目录的总大小,请运行以下命令:

sudo du -sh /var

输出将如下所示:

85G /var

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

  • 该命令以 sudo 开头,因为 /var 目录中的大多数文件和目录均由root用户拥有,常规用户不可读。 如果省略 sudo du 命令将显示“ 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

通过SCP,Rsync。或SFTP传输目录时,通过网络传输的数据量就是文件的表观大小。 这就是为什么在显示为 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

结论

在Linux中,您可以使用 du 命令获取目录的大小。

du终端盘