「du(1)」-

报告文件或目录的硬盘空间用量

命令语法格式

du [OPTION]… [FILE]…

du [OPTION]… –files0-from=F

命令描述

命令du报告一组指定的文件或者目录使用的磁盘空间量。

如果没有指定FILE参数,则du会报告当前目录的磁盘空间。通常情况下,磁盘空间以1024字节(1MB)为单位打印,但可以修改(参见「块大小」)。非整数量向上舍入到下一个更高的单位。

如果两个或多个硬链接指向同一个FILE,则只计算其中一个硬链接。参数FILE顺序会影响计算哪些链接,更改参数顺序可能会更改du输出的数字和条目。

命令支持的选项及含义

-0, –null
在每行的末尾输出零字节(NUL),而不是换行符(LF)。该选项后,du可以产生其他程序能够解析输出,比如xargs(1)命令,即使输出条目中嵌入换行符。

-a, –all
显示所有文件的计数,而不仅仅是目录。

–apparent-size
打印实际大小,而不是磁盘使用量。文件实际大小是wc -c在常规文件上报告的字节数,或者更一般地说,是ls -l –block-size=1或stat –format=%s。例如,包含’zoo’三个字符的文件的实际大小为4。但这样一个小文件可能需要0到16KiB或更多的磁盘空间,这取决于该文件所在的文件系统的类型和配置。但是,使用此命令创建的稀疏文件:

# dd bs=1 seek=2GiB if=/dev/null of=big

具有2GiB的实际尺寸,但在大多数现代系统中,它实际上几乎不使用磁盘空间。

-B size, –block-size=size
打印之前,按size进行单位换算(参见块大小)。例如,-BG以1,073,741,824字节为单位打印大小。

-b, –bytes
等价于–apparent-size –block-size=1

-c, –total
所有FILE参数处理完毕后,打印所有FILE的总和。这可以用来找出给定的文件或目录的总磁盘使用情况。

-D, –dereference-args
解析作为命令行参数的符号链接。不会影响其他符号链接。这有助于查找目录的磁盘使用情况,例如/usr/tmp,它通常是符号链接。

-H
等价于–dereference-args (-D)。

-d depth, –max-depth=depth
显示最多depth级别下的每个目录(以及文件,如果指定–all)总和。根目录为0级,所以du --max-depth=0等同于du -s命令(即du -s .)。

-s, –summarize
为每个FILE参数仅显示一个总和。

–files0-from=file
不处理在命令行上指定的FILE,而是处理在file中指定的文件名;file中的每个文件名都以零字节结尾(ASCII NUL)。

当文件名列表太长(以致可能超过命令行长度限制)时,这很有用。在这种情况下,通过xargs运行du是不可取的,因为它将文件列表拆分为多个部分,并为每一个文件执行du命令你,因此会给每个文件打印一个总计值(–total(-c)),而不是产生整个列表的总计值。产生由ASCII NUL分隔的文件名列表的一种方法是使用GNU中的find命令的-print0选项。如果file是’-‘,则从标准输入中读取由ASCII NUL分隔的文件名列表。

-h, –human-readable
为每个输出的文件大小添加一个表示单位的字母,例如,mebibytes的’M’。使用1024的倍数,而不是1000;’M’代表1,048,576字节。这个选项相当于–block-size=human-readable。如果你喜欢1000的倍数,请使用–si选项。

–inodes
列出inode使用信息而不是块使用情况。该选项对于查找包含许多文件的目录(因此会占用文件系统的大部分inode空间)非常有用(请参阅df的–inodes选项)。它可以结合选项-a,-c,-h,-l,-s,-S,-t,-x; 但是,传递关于块大小的其他选项(例如-b,-m和–apparent-size)将被忽略。

-k
以1024字节块打印大小,覆盖默认的块大小(参见块大小)。该选项相当于–block-size=1K。

-L, –dereference
解析符号链接(显示链接指向的文件或目录的磁盘空间使用情况,而不是链接使用的空间)。

-l, –count-links
计算所有文件的大小,即使它们已经作为硬链接出现。

-m
在兆(M,1048576字节块)为单位打印大小,这会覆盖默认块大小(参见块大小)。该选项相当于–block-size=1M。

-P, –no-dereference
计算符号链接使用的空间大小,而不是它所指向的文件使用的空间大小。

-S, –separate-dirs
通常,在du的输出中(当不使用–summarize时),目录名称旁边列出的大小表示该目录下所有条目的大小总和,以及目录本身的大小。使用–separate-dirs后,为目录名报告的大小将是排除任何子目录后的大小。

–si
为每个输出的大小附加一个SI样式的缩写,例如兆字节为’M’。使用1000的倍数,而不是1024;’M’代表1,000,000字节。该选项等同于–block-size=si。如果你喜欢1024的倍数,请使用-h或–human-readable选项。

-t size, –threshold=size
根据给定的大小size排除条目。size是指在正常模式下使用的块(参见块大小),或者与–inodes选项一起的inodes计数。

如果size是正值,那么du将仅打印尺寸大于或等于该尺寸的条目。如果size是负值,那么du将仅打印尺寸小于或等于该尺寸的条目。

虽然GNU查找可用于查找特定大小的文件,但du的–threshold选项也可用于根据给定的size筛选目录。

请注意,–threshold选项可以与–apparent-size选项结合使用,在这种情况下,会根据其实际大小忽略条目;–threshold选项可以与–inodes选项结合使用,在这种情况下,可以根据其inode计数忽略条目。

以下是如何使用–threshold来查找大小等于或大于200MB的目录:

# du –threshold=200MB

下面介绍如何使用–threshold来查找目录和文件的实际大小小于或等于500MB,注意-a选项:

# du -a -t -500 –apparent-size

下面介绍如何使用–threshold在文件系统根目录上查找目录,并目录在目录树中使用超过20000个inode。

# du –inodes -x –threshold=20000 /

–time
显示目录中任何文件或其任何子目录的最近的修改时间戳(mtime)。请参阅「文件时间戳」。

–time=ctime, –time=status, –time=use
显示目录中任何文件或其任何子目录的最近的状态更改时间戳(ctime)。请参阅「文件时间戳」。

–time=atime, –time=access
显示目录中任何文件或其任何子目录的最近的访问时间戳(ctime)。请参阅「文件时间戳」。

–time-style=style
按style指定的样式列出时间戳。只有同时指定了–time选项时,此选项才有效。style的取值如下:

+format’,使用格式format指定的格式列出时间戳,format的使用类似于date命令的参数格式(请参阅date(1))。例如,–time-style=”+%Y-%m-%d %H:%M:%S”会使du列出像’2002-03-30 23:45:56’这样的时间戳格式。与date(1)一样,格式的解释受LC_TIME语言环境类别的影响。

full-iso’,使用类似ISO 8601的日期、时间、时区组件,以纳秒为精度,完整列出时间戳,例如’2002-03-30 23:45:56.477817180 -0700’。此样式相当于‘+%Y-%m-%d %H:%M:%S.%N %z’。

long-iso’,以分钟为精度列出ISO 8601格式的日期、时间,例如’2002-03-30 23:45’。这些时间戳比’full-iso’格式的时间戳短,但这通常对于日常工作来说足够友好。此样式相当于‘+%Y-%m-%d %H:%M’。

iso’,列出时间戳的ISO 8601格式中的日期,例如’2002-03-30’。这种风格相当于‘+%Y-%m-%d’。

你可以使用环境变量TIME_STYLE指定–time-style选项的默认值;如果未设置TIME_STYLE,则默认样式为“long-iso”。为了与ls兼容,如果TIME_STYLE以’+’开头且包含换行符,则换行符和后续字符将被忽略;如果TIME_STYLE以’posix-‘开始,’posix-‘将被忽略;如果TIME_STYLE是’locale’,它将被忽略。

-X file, –exclude-from=file
像–exclude一样,但是是从文件中读取排除模式,每行一个。如果文件是’-‘,则从标准输入中获取模式。

–exclude=pattern
递归时,跳过与pattern匹配子目录或文件。例如,du –exclude =’*.o’排除名称以’.o’结尾的文件。

-x, –one-file-system
跳过与参数不在同一个文件系统上的目录。

其他选项

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

注意事项

在BSD系统上,如果是从HP-UX系统进行NFS挂接的文件,则du报告的大小是正确值的一半。在HP-UX系统上,如果文件是从BSD系统挂载的NFS的文件,则它报告的大小的正确值的两倍。这是由于HP-UX中的一个缺陷; 它也会影响HP-UX中的du程序。

退出状态

退出状态为零表示成功,非零值表示失败。

相关手册

查看在线手册:http://www.gnu.org/software/coreutils/du

查看info手册:info ‘(coreutils) du invocation’

参考文献

  • man 1 du, version GNU coreutils 8.28

更新日志

  • 06/18/2018 创建文章