Linux中的Du 命令

时间:2020-03-05 15:26:35  来源:igfitidea点击:

“ du”命令(“磁盘使用率disk usage”的缩写)报告给定文件或者目录使用的估计磁盘空间量。
这对于查找占用大量磁盘空间的文件和目录非常有用。

如何使用“ du”命令

“ du”命令的常规语法如下:

du [OPTIONS]... FILE...

如果给定的“ FILE”是目录,则“ du”将汇总该目录中每个文件和子目录的磁盘使用情况。
如果未指定“ FILE”,则“ du”将报告当前工作目录的磁盘使用情况。

在不带任何选项的情况下执行时,“ du”以字节为单位显示给定文件或者目录及其每个子目录的磁盘使用情况。

du ~/Documents

我们还可以将多个文件和目录作为参数传递给'du'命令:

du ~/Documents ~/Pictures ~/.zshrc

如果我们在没有权限的文件或者目录上运行“ du”,则会得到类似“ du:无法读取目录”的信息。
在这种情况下,我们需要在命令前加上'sudo'。

“ du”有很多选项,我们将仅列出最常用的选项。

“ -a”选项告诉“ du”报告目录中每个文件的磁盘空间使用情况。

du -a ~/Documents

通常,我们只想以人类可读的格式显示给定目录所占用的空间。
为此,请使用'-h'选项。

例如,要获取“/var/lib”及其所有子目录的总大小,请运行以下命令:

sudo du -h /var

我们之所以使用'sudo',是因为'/var/lib'目录中的大多数文件和目录均由root用户拥有,普通用户无法读取。
输出将如下所示:

...
4.0K	/var/lib/apt/mirrors/partial
8.0K	/var/lib/apt/mirrors
205M	/var/lib/apt
2.9G	/var/lib/

要仅报告指定目录的总大小,而不报告子目录的总大小,请使用“ -s”选项:

sudo du -sh /var
2.9G	/var

'-c'选项告诉'du'报告总计。
当我们要获取两个或者更多目录的合并大小时,此功能很有用。

sudo du -csh /var/log /var/lib
1.2G	/var/log
2.9G	/var/lib
4.1G	total

如果要显示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'开关。
文件的“表观大小”是文件中实际有多少数据。

sudo du -sh --apparent-size /var/lib
2.9G	/var/lib

“ du”还允许我们使用shell模式。
例如,要获取主目录中所有以“ Do”开头的目录的大小,请运行:

sudo du -csh ~/Do*
102M	/home/theitroad/Documents
358M	/home/theitroad/Downloads
460M	total

与其他命令一起使用'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