#列出当前目录下的文件和子文件夹[roc@roclinux ruanjian]$ ls -Fcurl-7.34.0.tar.gz soft/ wordpress-4.4.1.tar.gz #计算当前文件夹的总磁盘占用量, -s选项表示计算总和, -h选项表示以恰当的K/M/G单位展示[roc@roclinux ruanjian]$ du -sh .51M
-h
选项常常代表“展示帮助信息”,即 --help 的缩写形式。但是,du 命令却不走寻常路,它的-h
选项是 --human-readable 的缩写形式,表示以人类可读的形式展示磁盘使用量的单位名称(K/M/G)。-s
选项,是 --summarize 的缩写形式,其作用是对 du 的每一个给定参数计算其磁盘使用量,我们来看例子。#当前文件夹下有2个tar.gz文件和1个soft文件夹[roc@roclinux ruanjian]$ ls -Fcurl-7.34.0.tar.gz soft/ wordpress-4.4.1.tar.gz #通配形式的参数首先被Shell解析, 然后-s选项发挥作用, 展示每一个参数对应的磁盘空间使用量[roc@roclinux ruanjian]$ du -sh *3.4M curl-7.34.0.tar.gz41M soft6.8M wordpress-4.4.1.tar.gz
-c
选项,是 --total 的缩写形式,它表示的是针对输出的各个对象来计算其磁盘使用量的总和。比如,我们想计算当前文件夹下所有后缀是 tar.gz 的文件的磁盘使用量总和,那么命令是这样的:[roc@roclinux ruanjian]$ du -ch *.tar.gz3.4M curl-7.34.0.tar.gz6.8M wordpress-4.4.1.tar.gz11M 总用量可以看到,最后一行展示出的 11M,便是
-c
选项起到的求和作用。-c
选项也可以计算文件和文件夹的混合求和:[roc@roclinux ruanjian]$ du -ch curl-7.34.0.tar.gz soft3.4M curl-7.34.0.tar.gz41M soft45M 总用量
-c
选项就可以很好地满足需求了。#我们模拟了和图8完全一致的目录结构[roc@roclinux movies]$ tree.|-- China| |-- 2016| | |-- Action| | | `-- yip_man.avi| | |-- Adventure| | | `-- hero.avi| | `-- Romance| | `-- rose.avi| `-- 2017| |-- Action| | `-- drunken_master.avi| |-- Adventure| | `-- treatment.avi| `-- Romance| `-- banquet.avi`-- USA |-- 2016 | |-- Action | | `-- gian.avi | |-- Adventure | | `-- patton.avi | `-- Romance | `-- god_father.avi `-- 2017 |-- Action | `-- african_queen.avi |-- Adventure | `-- star_wars.avi `-- Romance `-- citizen_kane.avi #当--max-depth设定为0时, 只显示当前文件夹总大小#可见, --max-depth=0的作用, 相当于-s[roc@roclinux movies]$ du --max-depth=0 -h .5.2G #当--max-depth设定为1时, 则增加显示了第一级的文件夹大小[roc@roclinux movies]$ du --max-depth=1 -h .2.7G ./China2.5G ./USA5.2G . #当--max-depth设定为2时, 则会继续增加显示下一级子文件夹[roc@roclinux movies]$ du --max-depth=2 -h .1.4G ./China/20171.3G ./China/20162.7G ./China1.2G ./USA/20171.3G ./USA/20162.5G ./USA5.2G .以此类推,大家应该能够理解 --max-depth 的作用了吧。
-a
选项让 du 输出包括文件夹和文件在内的完整统计信息#如果不指定-a选项[roc@roclinux ruanjian]$ du -h .41M ./soft51M . #指定了-a选项之后, du则会刨根问底儿地把所有文件夹和文件都展示出来[roc@roclinux ruanjian]$ du -ah .6.8M ./wordpress-4.4.1.tar.gz3.4M ./curl-7.34.0.tar.gz980K ./soft/redis-2.6.16.tar.gz40M ./soft/go1.1.2.Linux-amd64.tar.gz41M ./soft51M .
-a
选项的威力还是很大的,即便是隐藏文件也会被囊括进来的,这时,有些用户的问题就随之而来了……#我们随意模拟了几个隐藏的文件和文件夹[roc@roclinux ruanjian]$ du -ah .6.8M ./wordpress-4.4.1.tar.gz3.4M ./curl-7.34.0.tar.gz980K ./soft/redis-2.6.16.tar.gz40M ./soft/go1.1.2.Linux-amd64.tar.gz120K ./soft/.abc0 ./.bbc/ddd0 ./.bbc/.ccc51M . #用--exclude的一个很简单的正则匹配, 就可以完美解决问题啦[roc@roclinux ruanjian]$ du -ah --exclude="*/.*" .6.8M ./wordpress-4.4.1.tar.gz3.4M ./curl-7.34.0.tar.gz980K ./soft/redis-2.6.16.tar.gz40M ./soft/go1.1.2.Linux-amd64.tar.gz41M ./soft51M .
#只想看当前文件夹下第一级的大小排序[roc@roclinux ruanjian]$ du -sh *|sort -nr41M soft6.8M wordpress-4.4.1.tar.gz3.4M curl-7.34.0.tar.gz #想看当前文件夹和其子文件夹下的大排序[roc@roclinux ruanjian]$ du -ah .|sort -hr51M .41M ./soft40M ./soft/go1.1.2.Linux-amd64.tar.gz6.8M ./wordpress-4.4.1.tar.gz3.4M ./curl-7.34.0.tar.gz980K ./soft/redis-2.6.16.tar.gz
-h
选项和-n
选项的区别:-n
选项,按数值进行比较,只会傻傻地比较数字,它会认为 98 K大于 2G。-h
选项,会更加聪明,先优先比较单位(G>M>K),然后再对数值进行比较。#这里的单位就是KB, 按1KB=1024bytes计算, 是3530752bytes[roc@roclinux ruanjian]$ du curl-7.34.0.tar.gz3448 curl-7.34.0.tar.gz #而这里可以很清楚地看到是MB[roc@roclinux ruanjian]$ du -h curl-7.34.0.tar.gz3.4M curl-7.34.0.tar.gz
#有一个文件, 里面只输入了a、b两个英文字母[roc@roclinux ruanjian]$ cat mywordab #用下面的方法, 我们可以把文件中的控制字符也展示出来, 发现除了a、b外还包括了一个结尾符[roc@roclinux ruanjian]$ sed -n l mywordab$ #用ls来查看大小, 发现展示的是3字节[roc@roclinux ruanjian]$ ls -l myword-rw-rw-r-- 1 roc roc 3 2月 18 15:53 myword #用du来查看大小, 竟然展示的是4KB字节[roc@roclinux ruanjian]$ du myword4 myword
#有一个文件, 里面只输入了a、b两个英文字母[roc@roclinux ruanjian]$ cat mywordab #用这个方法, 我们可以把文件里的控制字符也展示出来, 发现除了a、b外还包括了一个结尾符。[roc@roclinux ruanjian]$ sed -n l mywordab$ #用ls来查看大小, 发现展示的是3字节[roc@roclinux ruanjian]$ ls -l myword-rw-rw-r-- 1 roc roc 3 2月 18 15:53 myword #用du来查看大小, 发现竟然展示的是4KB[roc@roclinux ruanjian]$ du myword4 myword
#这是我们原有的那个文件[roc@roclinux ruanjian]$ cat mywordab[roc@roclinux ruanjian]$ ls -l myword-rw-rw-r-- 1 roc roc 3 2月 18 15:53 myword #在myword文件中, 用dd神器来创造一个大小为1G的空洞[roc@roclinux ruanjian]$ dd if=/dev/zero of=myword oflag=append bs=1M seek=1024 count=0记录了0+0 的读入记录了0+0 的写出0字节(0 B)已复制, 1.44e-05 秒, 0.0 kB/秒 #我们看看myword文件内部发生了什么, 看到\000了么, 这就是空洞![roc@roclinux ruanjian]$ sed -n l mywordab$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(此处省略数百行) #用ls查看, myword已经变成1GB啦, 好大![roc@roclinux ruanjian]$ ls -hl myword-rw-rw-r-- 1 roc roc 1.0G 2月 18 16:41 myword #用du查看, myword现回原形, 还是那么小, 只增加了一个字节而已[roc@roclinux ruanjian]$ du myword4 myword
联系客服