前言:今天df看到磁盘快满了,通过查看发现很多都是隐藏文件的,但是通过du又查不到隐藏目录的大小 不知道 哪些目录太大?怎么查看方便呢?
所以写了个脚本进行统计
脚本的功能,打印出指定目录下的一级目录所有隐藏目录的大小并且按M进行排序
#!/bin/bash #Author:Ajian #Date : 2009-08-17 #website:www.ohlinux.com for i in `find $DOCUMENT -maxdepth 1 -name ".*" -type d -print ` do du -sm $i done | sort -n | awk '{print $1"M"," ",$2}'
后来我又减化了下到一个命令
find /root -maxdepth 1 -name ".*" -type d -print | xargs du -sm | sort -n | awk '{print $1"M",$2}'
解説:
1、查找隐藏目录 使用find /path -name “.*” -type d -print
2、查找一级的隐藏目录添加上 -maxdepth 1
3、对目录进行以M兆的统计 du -sm
4、对大小进行排序 默认以第一列 sort -nr (r是反向排序)
5、awk 在这里进行修饰了下因为du -sm 是没有显示单位的 用du -sh 有单位但增加了排序的麻烦
6、 脚本和命令的书写区别 因为脚本用的for 语句是分条读入的所以如果把sort -n | awk ‘{print $1″M”,” “,$2}’ 放到 du -sm $i 之后不会对顺序产生变化,因为每次就对一条进行排序肯定最后的结果是没有影响的 而命令是用管道的方式 每次都是一批处理完后交给后面进行 注意脚本和命令的区别。
结果:
13M /root/.opera 13M /root/.svnqt 15M /root/.cpan 16M /root/.mplayer 78M /root/.tencent 100M /root/.config 116M /root/.VirtualBox 158M /root/.icons 160M /root/.google 218M /root/.kde4 258M /root/.mozilla 517M /root/.thumbnails 650M /root/.beagle