0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Linux使用du命令统计目录文件的大小

CHANBAEK 来源:myfreax 作者:myfreax 2023-01-04 17:25 次阅读

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

du命令的默认行为是打印文件目录占用的磁盘空间,而不是真是的文件大小。要打印文件目录真实大小,请使用du命令--apparent-size选项。

要理解这一点请先阅读我们教程什么是inode。然后理解这句话:如果磁盘的分区的块大小4096字节,那么即使文件没有4096字节的大小也会占用一个块的大小。

du 命令详解

du命令的语法形式du [OPTIONS]... FILE...[OPTIONS]是du命令的选项,可选参数FILE可以是一个或者多个文件。

如果指定的FILE是目录,du命令统计目录中每个文件大小,最后是目录的总大小。如果FILE未指定,du命令打印当前工作目录的磁盘使用情况。

在不指定任何选项运行du命令时,以千字节为单位显示文件目录的磁盘使用情况。您也可以指定多个文件和目录作为du命令的参数。

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

如果当前用户对指定文件目录没有读取权限,终端将会打印消息du:cannot read directory '/root': Permission denied无法读取目录,权限拒绝。

在这种情况下,您需要在以root或者具有sudo权限用户运行du命令,例如命令sudo du /root统计root用户的家目录。

du 命令单位

du命令默认使用千字节的单位打印文件目录的大小。但是如果你需要指定du命令打印大小的单位可以使用选项--block-size指定。

也可以使用一些du命令预定义的单位选项,例如选项-m以兆字节打印文件目录大小,也就是单位M。

du命令的--block-size 选项可以接受的单位可以是任意大小的数值和单位组成的值包括M,G,T等。

例如命令du -csh --block-size=500M ~/Downloads使用500M的大小作为单位,du命令将会文件目录大小除以500M打印大小。

du -csh --block-size=1G ~/Downloads
du -csh --block-size=500M ~/Downloads

du 命令自动选择大小单位

通常在很多情况下,我们只需要使用du命令的-h选项就足够应付日常的使用。

du命令的-h选项会自动根据文件大小选择合适的大小单位打印目录文件夹的大小。

例如命令sudo du -h /var打印/var/lib文件目录大小,大文件与目录将会以1K,234M,2G的方式打印。

sudo du -h /var
4.0K	/var/log/sysstat
.......
46G	/var

du 命令查看目录文件夹大小

要打印指定目录的总大小,而不打印子目录和文件的大小,请使用du命令-s选项。

例如命令sudo du -sh /var命令仅打印/var目录的大小,其子目录与文件将不会打印。

du命令默认使用千字节的单位打印文件目录的大小,在这里我们组合使用du命令的-h选项自动根据文件大小选择合适的大小单位打印目录文件夹的大小。

sudo du -sh /var
46G	/var

du 命令统计多个目录总大小

du命令的-c选项可以合并多个目录的总大小,当您要获取两个或多个目录的合并后的总大小时,此选项非常有用。

例如命令sudo du -csh /var/log /var/lib将会打印/var/lib/var/log两个目录大小和合并后的大小。

你可能看到du命令还组合使用-s选项,因为仅需要打印指定目录大小,所以不需要打印子目录文件大小,-h 表示以友好的阅读格式打印总大小。

sudo du -csh /var/log /var/lib
837M	/var/log
3.1G	/var/lib
3.9G	total

du 命令指定目录深度级别

默认情况下,du命令将会递归遍历指定目录的所有子目录,然后以千字节打印文件目录的大小。

如果要打印指定目录深度级别的目录大小,请使用du命令的--max-depth选项并指定子目录级别。

例如命令sudo du -h --max-depth=1 /var/lib仅打印/var/lib下第一级目录的总大小。

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 命令使用通配符指定多个文件目录

du命令还允许您使用通配符模式,同时指定多个文件目录统计大小。这在统计指定文件类型,匹配文件目录名称时非常有用。

例如命令sudo du -csh ~/Do*打印家目录中以Do开头的所有目录的大小。通常是/home/myfreax/Documents/home/linux/Downloads目录的大小。

sudo du -csh ~/Do*
4.0K	/home/myfreax/Documents
2.0G	/home/myfreax/Downloads
2.0G	total

du 命令按大小排序打印

du命令可以与接受标准输入的命令通过管道组合使用,来实现一些强大功能,比如对du命令的标准输出按大小进行排序。

例如命令sudo du -h /var/ | sort -rh | head -5打印/var目录的前5大文件与目录,这样你就可以找指定目录的巨大的文件与目录,有点类似磁盘使用率管理器。

这里解释一下命令实现,du -h /var/命令打印以友好阅读格式递归打印/var目录文件大小。

然后du命令的结果,也就是标准输出通过管道|传递到sort命令,sort命令的-r选项反向排序du命令的结果,-h按可读的数字大小进行排序。

最后将sort命令的排序结果通过管道传递给head命令打印前5行记录,经过sort命令排序后,最大文件目录排在前面,也就是前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

结论

至此,您已了解如何在Linux使用du命令统计目录文件的大小。与df命令打印已挂载文件系统的磁盘使用情况的信息不同,

du命令可以评估指定文件或目录的大小磁盘空间。要获取更多选项信息,可以在在终端运行命令man du。如果您有任何疑问或反馈,请在下面发表评论。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206735
  • 磁盘
    +关注

    关注

    1

    文章

    338

    浏览量

    24882
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
收藏 人收藏

    评论

    相关推荐

    何在Linux使用rm删除文件目录

    rm命令用于删除文件目录。它是每个Linux用户都应该熟悉的基本命令之一。
    发表于 12-08 16:49 2266次阅读

    linux统计文件个数

    这篇文章主要介绍了Linux统计当前文件夹下的文件个数、目录个数,本文使用ls命令配合管理、g
    发表于 07-24 08:40

    Linux文件的复制、删除和移动命令

    Linux文件的复制、删除和移动命令 Linux文件的复制、删除和移动命令  cp
    发表于 01-18 12:45 1203次阅读

    Linux目录的创建与删除命令

    Linux目录的创建与删除命令 Linux目录的创建与删除命令  mkdir
    发表于 01-18 12:46 1251次阅读

    Linux改变文件目录的访问权限命令

    Linux改变文件目录的访问权限命令 Linux改变文件
    发表于 01-18 12:46 1137次阅读

    linuxdu的功能和常用选项

    我们在download目录下创建一个符号链接,指向本目录下的一个文件。我们看到上面图片中显示的操作结果,当使用-L选项时,du会把符号链接所指向的
    发表于 11-28 10:03 2306次阅读

    du 及 df 命令的使用(附带示例)

    du 和 df 命令都是 Linux 系统的重要工具,来显示 Linux 文件系统的磁盘使用情况。这里我们将通过一些例子来分享这两个
    的头像 发表于 03-27 15:48 4674次阅读
    <b class='flag-5'>du</b> 及 df <b class='flag-5'>命令</b>的使用(附带示例)

    何在Linux中查找文件

    当系统的磁盘空间不足时,您可能会使用 df、du 或 ncdu 命令进行检查,但这些命令只会显示当前目录文件,并不会显示整个系统范围的
    发表于 05-05 13:58 974次阅读

    何在 Linux 中不使用 CD 命令进入目录/文件夹?

    众所周知,如果没有 cd 命令,我们无法 Linux 中切换目录。这个没错,但我们有一个名为 shopt 的 Linux 内置命令能帮助我们
    的头像 发表于 04-16 11:40 5666次阅读

    如何使用cp和rsync命令复制文件目录

    复制文件目录是在使用命令行时最常见的任务之一。在Linux,有两个命令用于复制文件cp和rsy
    的头像 发表于 12-07 17:39 6209次阅读

    何在Linux使用wc命令统计目录文件

    尽管不是很经常需要知道,但有时您需要找出指定目录中有多少个文件。例如,Linux系统inodes用完,则需要查找哪个目录包含成千上万个文件
    的头像 发表于 12-09 16:48 1467次阅读

    恒讯科技分析:如何在Linux上使用rm命令删除文件目录

    本指南展示了如何在Linux中使用rm命令行删除文件目录和其他内容?
    的头像 发表于 06-09 17:02 854次阅读

    恒讯科技分析:如何使用cp命令Linux中复制目录

    复制目录Linux中的一项基本任务,它允许我们复制目录、创建备份或在不同位置之间传输数据。在Linux中复制文件
    的头像 发表于 06-26 17:14 468次阅读

    linux中查找文件命令

    Linux中,可以使用以下命令来查找文件: find 命令:可以在指定目录及其子目录中查找
    的头像 发表于 11-08 14:24 603次阅读

    linux删除文件命令rm

    Linux系统中,可以使用rm命令来删除文件目录。该命令的功能是删除一个目录中的一个或多个
    的头像 发表于 11-13 16:42 428次阅读