Linux du命令

du命令是disk usage的缩写,展示文件或目录使用的估计磁盘空间量。这对于查找占用大量磁盘空间的文件和目录很有用

4 min read
By myfreax
Linux du命令
du命令

du命令是disk usage的缩写,展示文件或目录使用的磁盘空间量估算。这对于查找占用大量磁盘空间的文件和目录很有用。

du命令的语法是du [OPTIONS]... FILE...。如果指定的FILE是目录,du命令则将汇总该目录中每个文件和子目录的磁盘使用情况。

如果FILE未指定,du将报告当前工作目录的磁盘使用情况。

不带任何选项运行时du,以字节为单位显示文件或目录及其每个子目录的磁盘使用情况。您也可以将多个文件和目录du作为参数传递给命令。

du ~/Documents
du ~/Documents ~/Pictures ~/.zshrc

如果您在没有权限的文件或目录上运行du,将得到类似du:cannot read directory '/root': Permission denied无法读取目录,权限拒绝的信息。

在这种情况下,您需要在以root或者具有sudo权限用户运行du命令,并在du命令前加上sudo,例如命令sudo du /root

du有很多选项,我们将仅概述最常用的选项。-a选项指示du报告目录中每个文件的的大小。

通常,您只想以友好阅读的格式显示指定目录所占用的空间du命令的-h选项将会以友好的阅读格式展示。例如命令sudo du -h /var获取/var/lib和所有子目录的总大小。

我们之所以使用sudo,是因为/var/lib目录内的大多数文件和目录均由root用户拥有,而普通用户无法读取。

仅报告指定目录的总大小,而不报告子目录的总大小,请使用-s选项,命令sudo du -sh /var命令将仅打印/var目录的大小。

-c选项指示du报告多个目录的总大小。当您要获取两个或多个目录的合并大小时,此功能很有用。sudo du -csh /var/log /var/lib

如果要显示第n级子目录的磁盘使用情况,请使用--max-depth选项并指定子目录级别。例如,要获取一级目录的大小报告,请使用:

sudo du -h --max-depth=1 /var/lib
...
544K	/var/lib/usbutils
4.0K	/var/lib/acpi-support
205M	/var/lib/apt
2.9G	/var/lib

du命令的默认行为是获取目录或文件使用的磁盘空间。要查找文件真实的大小,请使用--apparent-size选项。文件的大小是文件中实际有多少数据。

du还允许您使用通配符的模式。例如命令sudo du -csh ~/Do*获取家目录中以Do开头的所有目录的大小。

分别是/home/myfreax/Documents/home/linux/Downloads目录的大小。

du与管道

du命令可以与其他带有管道的命令结合使用。

例如,要打印/var的目录里面前5大目录,可将du命令的标准输出通过管道传递到sort命令,并由排序大小。

然后将排序后的结果通过管道传递到head命令,并打印前5的目录。

sudo du -h /var/ | sort -rh | head -5
4.6G	/var/
2.9G	/var/lib
2.6G	/var/lib/snapd
1.7G	/var/lib/snapd/snaps
1.2G	/var/log/journal/af8ce1d394b844fea8c19ea5c6a9bd09

结论

到目前为止,您应该已经对如何使用该du命令有了很好的了解。

df显示有关已挂载文件系统的磁盘使用情况的信息不同,du命令可以评估指定文件或目录使用的磁盘空间。

您可以通过man du在终端中键入来查看所有可用的命令选项。如果您有任何疑问或反馈,请在下面发表评论

Related Articles