用途
统计文件或者目录占用硬盘空间大小
用法
du [OPTION] [FILE]
du [OPTION] --files0-from=F
常用参数
-a, --all
统计所有文件,不仅仅是目录
-b, --bytes
字节为单位统计
-c, --total
输出总大小
-D, --dereference-args
对命令行列出的链接文件,按照链接文件指向的真实文件大小统计,默认是链接文件的大小
--files0-from=F
从指定的文件F中读取需要统计的文件列表,多个文件名使用空字符(\0)分隔(NUL-terminated file names)。如果是"-",表示从标准输入流中读取。
-h, --human-readable
人类可读方式显示
--si
和-h选项一样,倍数是1000不是1024
-k
以k为单位
-l, --count-links
重复计算硬链接
-m
以m为单位
-L, --dereference
所有的链接文件以真实的文件大小统计
-P, --no-dereference
链接文件统计自身大小,默认
-0, --null
输出不换行显示,空字节连接
-S, --separate-dirs
统计时,不包含子目录
-s, --summarize
显示文件总的统计
-x, --one-file-system
忽略不同文件系统的目录
-X, --exclude-from=FILE
从文件中读取需要排除的文件列表,文件名可以包含shell通配符
--exclude=PATTERN
符合匹配模式的文件不统计
--max-depth=N
统计目录深度,N=0类似于-s选项,N=1统计到第一层子目录,依次类推
--help
输出帮助信息
--version
输出版本信息
实践
1.统计所有文件占用空间信息(人类可读方式显示)
1 [root@vm assets]# du -ah 2 19M ./game/game_asia_5_release_1.3.5_15.zip 3 20M ./game/game_asia_5_release_1.4.0_21.zip 4 20M ./game/game_asia_7_debug_1.4.0_20.zip 5 59M ./game 6 332K ./hotgame/hotgame_asia_5_release_1.3.5.15_1.4.0.21.zip 7 332K ./hotgame 8 34M ./source/asia/com.pokergame.dominoqq_release_1.3.5_20171223183437.apk 9 36M ./source/asia/com.pokergame.dominoqq_release_1.4.0_20180113181031.apk 10 40M ./source/asia/com.pokergame.susun_debug_1.4.0_20180110113325.apk 11 109M ./source/asia 12 0 ./source/thailand 13 109M ./source 14 167M .
2.统计空字符分隔的文件列表,链接文件显示真实的大小,以字节为单位
生成空格分隔文件列表
1 [root@vm ~]# echo -e -n ‘ntp.conf\0pip-9.0.1.tar.gz‘ > t.log 2 You have mail in /var/spool/mail/root 3 [root@vm ~]# ll 4 -rw-r--r--. 1 root root 25 Feb 26 18:12 t.log
统计文件占用空间
1 [root@vm ~]# du -b -D --files0-from=t.log 2 1830 ntp.conf 3 1197370 pip-9.0.1.tar.gz
3.不换行显示
1 [root@vm assets]# du -ah -0 2 19M ./game/game_asia_5_release_1.3.5_15.zip20M ./game/game_asia_5_release_1.4.0_21.zip20M ./game/game_asia_7_debug_1.4.0_20.zip59M ./game332K ./hotgame/hotgame_asia_5_release_1.3.5.15_1.4.0.21.zip332K ./hotgame34M ./source/asia/com.pokergame.dominoqq_release_1.3.5_20171223183437.apk36M ./source/asia/com.pokergame.dominoqq_release_1.4.0_20180113181031.apk40M ./source/asia/com.pokergame.susun_debug_1.4.0_20180110113325.apk109M ./source/asia0 ./source/thailand109M ./source167M .
4.统计不包含子目录
1 [root@vm assets]# du -ah -S 2 19M ./game/game_asia_5_release_1.3.5_15.zip 3 20M ./game/game_asia_5_release_1.4.0_21.zip 4 20M ./game/game_asia_7_debug_1.4.0_20.zip 5 59M ./game 6 332K ./hotgame/hotgame_asia_5_release_1.3.5.15_1.4.0.21.zip 7 332K ./hotgame 8 34M ./source/asia/com.pokergame.dominoqq_release_1.3.5_20171223183437.apk 9 36M ./source/asia/com.pokergame.dominoqq_release_1.4.0_20180113181031.apk 10 40M ./source/asia/com.pokergame.susun_debug_1.4.0_20180110113325.apk 11 109M ./source/asia 12 0 ./source/thailand 13 4.0K ./source 14 0 .
5.显示目录总的统计
1 [root@vm assets]# du -h -s 2 167M .
6.不统计包含game关键字的文件
1 [root@vm assets]# ll 2 total 8 3 drwxrwx---. 1 root vboxsf 4096 Jan 17 11:15 game 4 drwxrwx---. 1 root vboxsf 0 Jan 17 11:24 hotgame 5 drwxrwx---. 1 root vboxsf 4096 Jan 17 11:02 source 6 You have mail in /var/spool/mail/root 7 [root@vm assets]# du -s --exclude=‘game‘ 8 111196 . 9 [root@vm assets]# du -s 10 170708 . 11 [root@vm assets]# du -s --exclude=‘game‘ 12 111196 .
7.统计子目录空间,并按降序排列
1 [root@vm assets]# du -h -b --max-depth=1 | sort -nr 2 174782502 . 3 113516252 ./source 4 60929746 ./game 5 336504 ./hotgame
参考资料
【1】Linux Shell 通配符、元字符、转义符使用实例介绍
http://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html
【2】man du
【3】每天一个linux命令(34):du 命令
http://www.cnblogs.com/peida/archive/2012/12/10/2810755.html
【4】Representing/quoting NUL on the command line
https://unix.stackexchange.com/questions/160598/representing-quoting-nul-on-the-command-line