linux du命令解析(递归计算文件子目录大小)(计算大小)(计算容量)(存储空间占用)(磁盘容器、磁盘占用、存储占用)(du -h --max-depth=1 /)(大文件、文件空间)

167 篇文章 11 订阅
66 篇文章 0 订阅

du命令简介

du命令用于查看文件或目录的磁盘使用情况。它会递归地计算指定目录下所有文件和子目录的大小,并以可读性较好的方式显示出来。

用法

du [选项] [文件或目录]

常用选项

  • -h:以人类可读的方式显示文件大小。
  • -s:仅显示总计大小,不显示每个文件和目录的详细信息。
  • -c:同时显示总计大小。
  • -a:显示所有文件和目录的大小,包括隐藏文件。
  • -x:仅计算指定目录下的文件和子目录的大小,不计算其他文件系统挂载点上的文件大小。
  • -L:计算符号链接指向的文件或目录的大小,而不是符号链接本身的大小。

示例

  1. 查看当前目录下所有文件和子目录的大小:
du

在这里插入图片描述

  1. 查看指定目录的磁盘使用情况:
du /path/to/directory

在这里插入图片描述

  1. 以人类可读的方式显示文件大小:
du -h

在这里插入图片描述

  1. 仅显示总计大小:
du -s

在这里插入图片描述

  1. 同时显示总计大小:
du -c

在这里插入图片描述

  1. 显示所有文件和目录的大小,包括隐藏文件:
du -a

在这里插入图片描述
在这里插入图片描述

  1. 仅计算指定目录下的文件和子目录的大小,不计算其他文件系统挂载点上的文件大小:
du -x /path/to/directory

在这里插入图片描述

  1. 计算符号链接指向的文件或目录的大小,而不是符号链接本身的大小:
du -L /path/to/symlink

在这里插入图片描述

文档

du --help
Usage: du [OPTION]... [FILE]...
  or:  du [OPTION]... --files0-from=F
Summarize disk usage of the set of FILEs, recursively for directories.

Mandatory arguments to long options are mandatory for short options too.
  -0, --null            end each output line with NUL, not newline
  -a, --all             write counts for all files, not just directories
      --apparent-size   print apparent sizes, rather than disk usage; although
                          the apparent size is usually smaller, it may be
                          larger due to holes in ('sparse') files, internal
                          fragmentation, indirect blocks, and the like
  -B, --block-size=SIZE  scale sizes by SIZE before printing them; e.g.,
                           '-BM' prints sizes in units of 1,048,576 bytes;
                           see SIZE format below
  -b, --bytes           equivalent to '--apparent-size --block-size=1'
  -c, --total           produce a grand total
  -D, --dereference-args  dereference only symlinks that are listed on the
                          command line
  -d, --max-depth=N     print the total for a directory (or file, with --all)
                          only if it is N or fewer levels below the command
                          line argument;  --max-depth=0 is the same as
                          --summarize
      --files0-from=F   summarize disk usage of the
                          NUL-terminated file names specified in file F;
                          if F is -, then read names from standard input
  -H                    equivalent to --dereference-args (-D)
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
      --inodes          list inode usage information instead of block usage
  -k                    like --block-size=1K
  -L, --dereference     dereference all symbolic links
  -l, --count-links     count sizes many times if hard linked
  -m                    like --block-size=1M
  -P, --no-dereference  don't follow any symbolic links (this is the default)
  -S, --separate-dirs   for directories do not include size of subdirectories
      --si              like -h, but use powers of 1000 not 1024
  -s, --summarize       display only a total for each argument
  -t, --threshold=SIZE  exclude entries smaller than SIZE if positive,
                          or entries greater than SIZE if negative
      --time            show time of the last modification of any file in the
                          directory, or any of its subdirectories
      --time=WORD       show time as WORD instead of modification time:
                          atime, access, use, ctime or status
      --time-style=STYLE  show times using STYLE, which can be:
                            full-iso, long-iso, iso, or +FORMAT;
                            FORMAT is interpreted like in 'date'
  -X, --exclude-from=FILE  exclude files that match any pattern in FILE
      --exclude=PATTERN    exclude files that match PATTERN
  -x, --one-file-system    skip directories on different file systems
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/du>
or available locally via: info '(coreutils) du invocation'

中文

用中文翻译如下:

用法:du [选项]... [文件]...
  或:du [选项]... --files0-from=F
递归地总结一组文件的磁盘使用情况。

长选项的必选参数对于短选项也是必选的。
  -0, --null            每行输出以NUL而不是换行符结尾
  -a, --all             计算所有文件的大小,而不仅仅是目录
      --apparent-size   打印表面大小,而不是磁盘使用量;虽然表面大小通常较小,但由于('稀疏')文件中的空洞、内部碎片、间接块等原因,它可能更大
  -B, --block-size=SIZE  在打印之前按SIZE缩放大小;例如,
                           '-BM'1,048,576字节为单位打印大小;
                           请参阅下面的SIZE格式
  -b, --bytes           等同于'--apparent-size --block-size=1'
  -c, --total           生成总计
  -D, --dereference-args  仅解引用命令行上列出的符号链接
  -d, --max-depth=N     仅在目录(或文件,使用--all)的层次结构低于命令行参数的N级时才打印总计;--max-depth=0--summarize相同
      --files0-from=F   总结在文件F中指定的以NUL结尾的文件名的磁盘使用情况;
                          如果F为-,则从标准输入读取名称
  -H                    等同于--dereference-args(-D)
  -h, --human-readable  以人类可读的格式打印大小(例如,1K 234M 2G)
      --inodes          列出inode使用信息而不是块使用信息
  -k                    等同于--block-size=1K
  -L, --dereference     解引用所有符号链接
  -l, --count-links     如果有硬链接,则多次计算大小
  -m                    等同于--block-size=1M
  -P, --no-dereference  不要跟随任何符号链接(这是默认设置)
  -S, --separate-dirs   对于目录,不包括子目录的大小
      --si              类似于-h,但使用1000而不是1024的幂
  -s, --summarize       仅显示每个参数的总计
  -t, --threshold=SIZE  排除小于SIZE的条目(如果为正数),
                          或大于SIZE的条目(如果为负数)
      --time            显示目录中任何文件或其子目录的最后修改时间
      --time=WORD       以WORD而不是修改时间显示时间:
                          atime,access,use,ctime或status
      --time-style=STYLE  使用STYLE显示时间,可以是:
                            full-iso,long-iso,iso或+FORMAT;
                            FORMAT的解释方式与'date'相同
  -X, --exclude-from=FILE  排除与FILE中的任何模式匹配的文件
      --exclude=PATTERN    排除与PATTERN匹配的文件
  -x, --one-file-system    跳过不同文件系统上的目录
      --help     显示此帮助并退出
      --version  输出版本信息并退出

显示的值以--block-size、DU_BLOCK_SIZE、BLOCK_SIZE和BLOCKSIZE环境变量中的第一个可用的SIZE为单位。
否则,默认单位为1024字节(如果设置了POSIXLY_CORRECT,则为512字节)。

SIZE参数是一个整数和可选的单位(例如:10K是10*1024)。
单位可以是K、M、G、T、P、E、Z、Y(1024的幂次方)或KB、MB、...1000的幂次方)。

GNU coreutils在线帮助:<https://www.gnu.org/software/coreutils/>
完整文档:<https://www.gnu.org/software/coreutils/du>
或通过本地info访问:<info '(coreutils) du invocation'>

选项详细解释

示例

递归统计某个目录下所有文件大小(不足单位会向上取整)(注意:可能会将目录大小也统计进去,目录大小为4096字节=4kb?)

以byte为单位:

du -sb /path/to/dir
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# 
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# du -sb /userdata/testOtherPrj/test/testDeleteFile/vid
1285668420	/userdata/testOtherPrj/test/testDeleteFile/vid
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# 

以mb为单位:

du -sm /path/to/dir
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# 
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# du -sm /userdata/testOtherPrj/test/testDeleteFile/vid
1228	/userdata/testOtherPrj/test/testDeleteFile/vid
root@sx-virtual-machine:/userdata/testOtherPrj/test/testDeleteFile# 

查找占用空间过大的目录或文件(du -h --max-depth=<No> <path>

比如,查找根目录下哪个目录占用空间最大,可用:

du -h --max-depth=1 /

如果不加后面的路径,就是默认查找当前目录:

du -h --max-depth=1

du命令使用注意事项

在使用du命令时,有一些注意事项需要注意:

  1. du命令默认会递归地计算指定目录下所有文件和子目录的大小。如果目录结构非常复杂或文件数量非常多,可能会导致计算时间较长。可以使用-s选项仅显示总计大小,以提高计算速度。

  2. du命令默认以块为单位显示文件大小。可以使用-h选项以人类可读的方式显示文件大小,更容易理解。

  3. du命令会计算所有文件和目录的大小,包括隐藏文件。如果只想计算非隐藏文件的大小,可以使用-a选项。

  4. 默认情况下,du命令会计算指定目录下所有文件和子目录的大小,包括其他文件系统挂载点上的文件大小。如果只想计算指定目录下的文件和子目录的大小,可以使用-x选项。

  5. du命令会计算符号链接本身的大小,而不是符号链接指向的文件或目录的大小。如果想计算符号链接指向的文件或目录的大小,可以使用-L选项。

  6. du命令默认会显示所有文件和目录的大小,包括每个文件和目录的详细信息。如果只想显示总计大小,可以使用-s选项。

  7. du命令需要有足够的权限才能访问文件和目录。如果没有足够的权限,可能无法计算某些文件或目录的大小。

  8. du命令可以结合其他命令一起使用,例如使用管道符号|du命令的输出传递给其他命令进行进一步处理。

du命令貌似无法只计算文件的大小,它会把目录的大小一起算上

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Linux系统中,文件夹(也称为目录)包含其他文件夹时,这些子文件夹也会占用磁盘空间。当我们创建一个文件夹并在其中创建子文件夹时,父文件夹会记录子文件夹的信息,并将它们的大小计算到父文件夹的磁盘使用量中。 当我们使用命令`du`查看文件大小时,它会递归地计算文件夹中所有文件和子文件夹的大小,并显示总大小。这意味着文件夹的实际大小是包含所有子文件夹的大小。 例如,如果我们有一个名为`/home`的文件夹,其中包含三个子文件夹`/home/user1`,`/home/user2`和`/home/user3`,而每个子文件夹的大小分别为100MB,200MB和300MB。当我们使用`du -sh /home`命令时,它将显示`600MB`作为`/home`文件夹的大小,这是三个子文件大小之和。 这种方式有助于我们了解整个文件夹层次结构的大小,同时也能够更好地管理磁盘空间。我们可以根据需要删除、移动或复制这些文件夹,以释放磁盘空间或进行其他操作。 总之,Linux文件夹中包含的子文件占用磁盘空间。在计算文件大小时,系统将递归地考虑所有子文件夹的大小,并将其包含在父文件夹的磁盘使用量中。 ### 回答2: Linux文件夹是一个包含子文件夹的文件夹,占用磁盘空间计算方式与其他操作系统类似。当在Linux系统上创建一个文件夹时,系统会自动为该文件夹分配一定的磁盘空间。 在Linux中,文件夹本身只是一个用于组织和存储文件的集合,它不占用实际的磁盘空间。而文件夹中的子文件夹和文件才会占用磁盘空间。 每个文件文件夹都会消耗一定的磁盘空间,其大小取决于文件文件夹的实际内容。当一个文件夹包含多个子文件夹时,它们的磁盘空间会被累加计算。 要计算文件夹及其子文件夹所占用磁盘空间,可以使用一些命令行工具。例如,使用"du"命令可以获取文件夹及其子文件夹的磁盘空间使用情况。通过-duh选项,可以以人类可读的方式显示磁盘空间大小。 总结来说,在Linux中,文件占用磁盘空间是由其包含的子文件夹和文件大小累加而来。计算文件占用磁盘空间可以使用命令行工具来获取准确的结果。 ### 回答3: 在Linux中,文件夹(也称为目录)包含子文件夹时,占用磁盘空间是由该目录及其子目录中的所有文件和子文件夹的大小总和决定的。当我们使用命令查看文件大小时,实际上是计算文件夹下所有文件和子文件夹的大小,并将结果累加得到最终的值。 这个过程可以通过使用du命令来完成。du磁盘使用)命令用于估算文件目录磁盘空间使用量。du命令默认情况下将递归地计算整个目录树下所有文件子目录大小。可以使用du命令的-h参数来以易读的方式显示目录文件大小。 例如,使用du -h命令查看当前目录下的文件夹及其子文件夹的大小: $ du -h 4.0K ./Desktop 72K ./Documents 8.0K ./Downloads 8.0K ./Pictures 20K ./Music 4.0K ./Videos 168K . 以上示例中,/目录(也就是当前目录)下的所有子文件大小累加起来为168KB。这个大小包括了当前目录下的所有文件和子文件夹的大小,以及它们的子目录大小。 总而言之,Linux文件占用磁盘空间包括了目录本身以及其子目录中所有文件和子文件夹的大小。使用du命令可以帮助我们快速计算文件夹的大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值