00. 目录
01. 命令概述
du - 报告磁盘空间使用情况
du命令**的英文全称是“Disk Usage”,即用于查看磁盘占用空间的意思。但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看,而不是某个分区。
02. 命令格式
用法:du [选项]... [文件]...
或:du [选项]... --files0-from=F
03. 常用选项
POSIX 选项
-a 显示对涉及到的所有文件的统计,而不只是包含子目录。
-k 用1024字节作为计数单位,替代缺省时512字节的计数单位。
-x 只输出指定参数的实际使用空间,而不包括其下的子目录。
-s 只统计指定参数的在同一设备上所使用的空间。
GNU 选项
-a, --all
显示对所有文件的统计,而不只是包含子目录。
-b, --bytes
输出以字节为单位的大小,替代缺省时1024字节的计数单位。
--block-size=size
输出以块为单位的大小,块的大小为 size 字节。( file- utils-4.0
的新选项)
-c, --total
在处理完所有参数后给出所有这些参数的总计。这个选项被
用给出指定的一组文件或目录使用的空间的总和。
-D, --dereference-args
引用命令行参数的符号连接。但不影响其他的符号连接。 这对找出象
/usr/tmp 这样的目录的磁盘使用量有用, /usr/tmp
等通常是符号连接。 译住:例如在 /var/tmp 下建立一个目录test,
而/usr/tmp 是指向 /var/tmp 的符号连接。du /usr/tmp 返回一项
/usr/tmp , 而 du - D /usr/tmp 返回两项 /usr/tmp,/usr/tmp/test。
--exclude=pattern
在递归时,忽略与指定模式相匹配的文件或子目录。模式 可以是任何
Bourne shell 的文件 glob 模式。( file- utils-4.0 的新选项)
-h, --human-readable
为每个数附加一个表示大小单位的字母,象用M表示二进制 的兆字节。
-H, --si
与 -h 参数起同样的作用,只是使用法定的 SI 单位( 用
1000的幂而不是 1024 的幂,这样 M 代表的就是1000000 而不是
1048576)。(fileutils-4.0 的新选项)
-k, --kilobytes
输出以1024字节为计数单位的大小。
-l, --count-links
统计所有文件的大小,包括已经被统计过的(作为一个硬连接)。
-L, --dereference
引用符号连接(不是显示连接点本身而是连接指向的文件或
目录所使用的磁盘空间)。
-m, --megabytes
输出以兆字节的块为计数单位的大小(就是 1,048,576 字节)。
--max-depth=n
只输出命令行参数的小于等于第n层的目录的总计。--max-depth=0的作用同于-s选项。(fileutils-4.0的新选项)
-s, --summarize
对每个参数只显示总和。
-S, --separate-dirs
单独报告每一个目录的大小,不包括子目录的大小。
-x, --one-file-system
忽略与被处理的参数不在同一个文件系统的目录。
-X file, --exclude-from=file
除了从指定的文件中得到模式之外与 --exclude 一样。
模式以行的形式列出。如果指定的文件是'-',那么从标准输
入中读出模式。(fileutils-4.0 的新选项) GNU 标准选项
--help 在标准输出上输出帮助信息后正常退出。
--version
在标准输出上输出版本信息后正常退出。
-- 终结选项列表
04. 参考示例
4.1 显示当前目录所使用的磁盘空间
[deng@redhat test]$ du
4 .
[deng@redhat test]$
**说明:**只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小
4.2 显示指定文件所占空间
[deng@redhat ~]$ du oracle_client_11gR2.tar.gz
56280 oracle_client_11gR2.tar.gz
[deng@redhat ~]$
4.3 查看指定目录的所占空间
[deng@redhat ~]$ du -sh bak
4.3M bak
[deng@redhat ~]$
4.4 显示多个文件所占空间
[deng@redhat ~]$ du scott_data.sql oracle_client_11gR2.tar.gz
4 scott_data.sql
56280 oracle_client_11gR2.tar.gz
[deng@redhat ~]$
4.5 只显示总和的大小
[deng@redhat ~]$ du -s bj34
5976 bj34
[deng@redhat ~]$ du -s bak
4348 bak
[deng@redhat ~]$
4.6 方便阅读的格式显示
[deng@redhat ~]$ du -h oracle_client_11gR2.tar.gz
55M oracle_client_11gR2.tar.gz
[deng@redhat ~]$
4.7 文件和目录都显示
[deng@redhat ~]$ du -ah bak
12K bak/5th/1client/poolsocket.c
4.0K bak/5th/1client/socketlog.c
4.0K bak/5th/1client/socketlog.h
20K bak/5th/1client/socketutil.c
4.0K bak/5th/1client/socketutil.h
4.0K bak/5th/1client/Makefile
4.0K bak/5th/1client/client.c
4.8 显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
[deng@redhat ~]$ du -c test
4 test
4 总用量
[deng@redhat ~]$
说明:加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。
4.9 按照空间大小排序
[deng@redhat ~]$ du bak/ | sort -nr
4.10 输出当前目录下各个子目录所使用的空间
[deng@redhat ~]$ du -h bak --max-depth=1
204K bak/5th
284K bak/6th
1.0M bak/7th
1.4M bak/8th
1.4M bak/9th
4.3M bak
[deng@redhat ~]$
4.11 显示最后的修改时间
[deng@redhat ~]$ du --time test.c
4 2019-07-30 10:04 test.c
[deng@redhat ~]$
4.12 显示最后访问时间
[deng@redhat ~]$ du --time=use test.c
4 2019-07-30 10:04 test.c
[deng@redhat ~]$
4.13 显示最后状态修改时间
[deng@redhat ~]$ du --time=status test.c
4 2019-07-30 10:04 test.c
[deng@redhat ~]$
4.14 以Mb为单位显示
[deng@redhat ~]$ du -m oracle_client_11gR2.tar.gz
55 oracle_client_11gR2.tar.gz
注意:不足1M的按照1M处理。