使用Win平台习惯后在Linux下查看目录列表时希望能看到实际文件的大小,我们可以使用du命令查看
命令格式
du [options] [path]
常用参数有
-a or -all
为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。-b or -bytes
显示目录或文件大小时,以byte为单位。-c or -total
除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。-D or -dereference-args
显示指定符号连接的源文件大小。-h or -human-readable
以K,M,G为单位,提高信息的可读性。-H or -si
与-h
参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。-k or -kilobytes
以1024 bytes为单位。-l or -count-links
重复计算硬件连接的文件。-L<符号连接> or -dereference<符号连接>
显示选项中所指定符号连接的源文件大小。-m or -megabytes
以1MB为单位。-s or -summarize
仅显示总计,即当前目录的大小。-S or -separate-dirs
显示每个目录的大小时,并不含其子目录的大小。-x or -one-file-xystem
以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。-X<文件> or -exclude-from=<文件>
在<文件>指定目录或文件。--exclude=<目录或文件>
略过指定的目录或文件。--max-depth=<目录层数>
超过指定层数的目录后,予以忽略。--help
显示帮助。--version
显示版本信息。
简单使用
[root@lee ~]# du
16 ./.gnupg
4 ./公共的
68 ./Imaging-1.1.7/Scripts
372 ./Imaging-1.1.7/Docs
156 ./Imaging-1.1.7/Images
88 ./Imaging-1.1.7/Sane
2040 ./Imaging-1.1.7/PIL
28 ./Imaging-1.1.7/Tk
1464 ./Imaging-1.1.7/build/temp.linux-x86_64-2.7/libImaging
2156 ./Imaging-1.1.7/build/temp.linux-x86_64-2.7
1884 ./Imaging-1.1.7/build/lib.linux-x86_64-2.7
36 ./Imaging-1.1.7/build/scripts-2.7
4080 ./Imaging-1.1.7/build
596 ./Imaging-1.1.7/libImaging
7864 ./Imaging-1.1.7
264 ./jpeg-9/.deps
5512 ./jpeg-9/.libs
13272 ./jpeg-9
...
-s
参数 ,不把子目录列出来
[root@lee ~]# du -s ./*
4 ./anaconda-ks.cfg
4 ./a.py
31148 ./freetype-2.4.12
2072 ./freetype-2.4.12.tar.gz
7864 ./Imaging-1.1.7
488 ./Imaging-1.1.7.tar.gz
56 ./install.log
12 ./install.log.syslog
13272 ./jpeg-9
968 ./jpegsrc.v9.tar.gz
4 ./main.py
235488 ./mongodb-linux-x86_64-2.4.1
92044 ./mongodb-linux-x86_64-2.4.1.tgz
6548 ./PIL-1.1.7
496 ./PIL-1.1.7.tar.gz
4 ./pyc.sh
4 ./sup.sh
12 ./test
4 ./test.py
12 ./test.tgz
4964 ./www.nihaoagent.com_2012_12_18.tar.bz2
4224 ./zlib-1.2.8
560 ./zlib-1.2.8.tar.gz
4 ./公共的
4 ./模板
4 ./视频
4 ./图片
4 ./文档
4 ./下载
4 ./音乐
4 ./桌面
-h
参数,以K,M,G为单位,提高信息的可读性
[root@lee ~]# du -sh ./*
4.0K ./anaconda-ks.cfg
4.0K ./a.py
31M ./freetype-2.4.12
2.1M ./freetype-2.4.12.tar.gz
7.7M ./Imaging-1.1.7
488K ./Imaging-1.1.7.tar.gz
56K ./install.log
12K ./install.log.syslog
13M ./jpeg-9
968K ./jpegsrc.v9.tar.gz
4.0K ./main.py
230M ./mongodb-linux-x86_64-2.4.1
90M ./mongodb-linux-x86_64-2.4.1.tgz
6.4M ./PIL-1.1.7
496K ./PIL-1.1.7.tar.gz
4.0K ./pyc.sh
4.0K ./sup.sh
12K ./test
4.0K ./test.py
12K ./test.tgz
4.9M ./www.nihaoagent.com_2012_12_18.tar.bz2
4.2M ./zlib-1.2.8
560K ./zlib-1.2.8.tar.gz
4.0K ./公共的
4.0K ./模板
4.0K ./视频
4.0K ./图片
4.0K ./文档
4.0K ./下载
4.0K ./音乐
4.0K ./桌面
-a
参数,查看磁盘使用情况
[root@lee ~]# du -a ./*.gz
2072 ./freetype-2.4.12.tar.gz
488 ./Imaging-1.1.7.tar.gz
968 ./jpegsrc.v9.tar.gz
496 ./PIL-1.1.7.tar.gz
560 ./zlib-1.2.8.tar.gz
-m
参数,以M为单位
[root@lee ~]# du -sm ./*
1 ./anaconda-ks.cfg
1 ./a.py
31 ./freetype-2.4.12
3 ./freetype-2.4.12.tar.gz
8 ./Imaging-1.1.7
1 ./Imaging-1.1.7.tar.gz
1 ./install.log
1 ./install.log.syslog
13 ./jpeg-9
1 ./jpegsrc.v9.tar.gz
1 ./main.py
230 ./mongodb-linux-x86_64-2.4.1
90 ./mongodb-linux-x86_64-2.4.1.tgz
7 ./PIL-1.1.7
1 ./PIL-1.1.7.tar.gz
1 ./pyc.sh
1 ./sup.sh
1 ./test
1 ./test.py
1 ./test.tgz
5 ./www.nihaoagent.com_2012_12_18.tar.bz2
5 ./zlib-1.2.8
1 ./zlib-1.2.8.tar.gz
1 ./公共的
1 ./模板
1 ./视频
1 ./图片
1 ./文档
1 ./下载
1 ./音乐
1 ./桌面
-exclude
参数,排除指定文件
[root@lee ~]# du -s --exclude='zlib-1.2.8.tar.gz' ./*
4 ./anaconda-ks.cfg
4 ./a.py
31148 ./freetype-2.4.12
2072 ./freetype-2.4.12.tar.gz
7864 ./Imaging-1.1.7
488 ./Imaging-1.1.7.tar.gz
56 ./install.log
12 ./install.log.syslog
13272 ./jpeg-9
968 ./jpegsrc.v9.tar.gz
4 ./main.py
235488 ./mongodb-linux-x86_64-2.4.1
92044 ./mongodb-linux-x86_64-2.4.1.tgz
6548 ./PIL-1.1.7
496 ./PIL-1.1.7.tar.gz
4 ./pyc.sh
4 ./sup.sh
12 ./test
4 ./test.py
12 ./test.tgz
4964 ./www.nihaoagent.com_2012_12_18.tar.bz2
4224 ./zlib-1.2.8
4 ./公共的
4 ./模板
4 ./视频
4 ./图片
4 ./文档
4 ./下载
4 ./音乐
4 ./桌面
-c
参数,显示文件或者目录总和
[root@lee ~]# du -sch *
4.0K anaconda-ks.cfg
4.0K a.py
31M freetype-2.4.12
2.1M freetype-2.4.12.tar.gz
7.7M Imaging-1.1.7
488K Imaging-1.1.7.tar.gz
56K install.log
12K install.log.syslog
13M jpeg-9
968K jpegsrc.v9.tar.gz
4.0K main.py
230M mongodb-linux-x86_64-2.4.1
90M mongodb-linux-x86_64-2.4.1.tgz
6.4M PIL-1.1.7
496K PIL-1.1.7.tar.gz
4.0K pyc.sh
4.0K sup.sh
12K test
4.0K test.py
12K test.tgz
4.9M www.nihaoagent.com_2012_12_18.tar.bz2
4.2M zlib-1.2.8
560K zlib-1.2.8.tar.gz
4.0K 公共的
4.0K 模板
4.0K 视频
4.0K 图片
4.0K 文档
4.0K 下载
4.0K 音乐
4.0K 桌面
391M 总用量
获取目录下所有文件的大小并倒序排列
[root@lee ~]# du -sh * | sort -hr
230M mongodb-linux-x86_64-2.4.1
90M mongodb-linux-x86_64-2.4.1.tgz
31M freetype-2.4.12
13M jpeg-9
7.7M Imaging-1.1.7
6.4M PIL-1.1.7
4.9M www.nihaoagent.com_2012_12_18.tar.bz2
4.2M zlib-1.2.8
2.1M freetype-2.4.12.tar.gz
968K jpegsrc.v9.tar.gz
560K zlib-1.2.8.tar.gz
496K PIL-1.1.7.tar.gz
488K Imaging-1.1.7.tar.gz
56K install.log
12K test.tgz
12K test
12K install.log.syslog
4.0K 桌面
4.0K 音乐
4.0K 下载
4.0K 文档
4.0K 图片
4.0K 视频
4.0K 模板
4.0K 公共的
4.0K test.py
4.0K sup.sh
4.0K pyc.sh
4.0K main.py
4.0K a.py
4.0K anaconda-ks.cfg
网上有不少人再做这个需求时,是按n排序的,结果:
[root@lee ~]# du -sh * | sort -nr
968K jpegsrc.v9.tar.gz
560K zlib-1.2.8.tar.gz
496K PIL-1.1.7.tar.gz
488K Imaging-1.1.7.tar.gz
230M mongodb-linux-x86_64-2.4.1
90M mongodb-linux-x86_64-2.4.1.tgz
56K install.log
31M freetype-2.4.12
13M jpeg-9
12K test.tgz
12K test
12K install.log.syslog
7.7M Imaging-1.1.7
6.4M PIL-1.1.7
4.9M www.nihaoagent.com_2012_12_18.tar.bz2
4.2M zlib-1.2.8
4.0K 桌面
4.0K 音乐
4.0K 下载
4.0K 文档
4.0K 图片
4.0K 视频
4.0K 模板
4.0K 公共的
4.0K test.py
4.0K sup.sh
4.0K pyc.sh
4.0K main.py
4.0K a.py
4.0K anaconda-ks.cfg
2.1M freetype-2.4.12.tar.gz
插曲: sort的参数h与n是有区别的,n直接就是数字,而h还能根据字母排序,因为使用du -sh
产生的列不仅有数字还有单位M与K,所以不能依靠数字排序,还应该依靠单位来排序
如果想获得更详细的帮助,直接-help就能看到帮助文档,CentOS的中文文档翻译的还不错:
[root@lee ~]# du --help
用法:du [选项]... [文件]...
或:du [选项]... --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 输出所有文件的磁盘用量,不仅仅是目录
--apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会
小一些,但有时它会因为稀疏文件间的"洞"、内部碎
片、非直接引用的块等原因而变大。
-B, --block-size=大小 使用指定字节数的块
-b, --bytes 等于--apparent-size --block-size=1
-c, --total 显示总计信息
-D, --dereference-args 解除命令行中列出的符号连接
--files0-from=F 计算文件F 中以NUL 结尾的文件名对应占用的磁盘空间
如果F 的值是"-",则从标准输入读入文件名
-H 等于--dereference-args (-D)
-h, --human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G)
--si 类似-h,但在计算时使用1000 为基底而非1024
-k 等于--block-size=1K
-l, --count-links 如果是硬连接,就多次计算其尺寸
-m 等于--block-size=1M
-L, --dereference 找出任何符号链接指示的真正目的地
-P, --no-dereference 不跟随任何符号链接(默认)
-0, --null 将每个空行视作0 字节而非换行符
-S, --separate-dirs 不包括子目录的占用量
-s, --summarize 只分别计算命令列中每个参数所占的总用量
-x, --one-file-system 跳过处于不同文件系统之上的目录
-X, --exclude-from=文件 排除与指定文件中描述的模式相符的文件
--exclude=PATTERN 排除与PATTERN 中描述的模式相符的文件
--max-depth=N 显示目录总计(与--all 一起使用计算文件)
当N 为指定数值时计算深度为N;
--max-depth=0 等于--summarize
--time 显示目录或该目录子目录下所有文件的最后修改时间
--time=WORD 显示WORD 时间,而非修改时间:
atime,access,use,ctime 或status
--time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):
full-iso,long-iso,iso,+FORMAT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
所显示的数值是来自 --block-size、DU_BLOCK_SIZE、BLOCK_SIZE
及 BLOCKSIZE 环境变量中第一个可用的 SIZE 单位。
否则,默认单位是 1024 字节(或是 512,若设定 POSIXLY_CORRECT 的话)。
SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:
KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。
请向bug-coreutils@gnu.org 报告du 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告du 的翻译错误
要获取完整文档,请运行:info coreutils 'du invocation'