前言:今天df看到磁盤快滿了,通過查看發(fā)現(xiàn)很多都是隱藏文件的,但是通過du又查不到隱藏目錄的大小 不知道 哪些目錄太大?怎么查看方便呢?
所以寫了個(gè)腳本進(jìn)行統(tǒng)計(jì)
腳本的功能,打印出指定目錄下的一級目錄所有隱藏目錄的大小并且按M進(jìn)行排序
#!/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}'
后來我又減化了下到一個(gè)命令
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、對目錄進(jìn)行以M兆的統(tǒng)計(jì) du -sm
4、對大小進(jìn)行排序 默認(rèn)以第一列 sort -nr (r是反向排序)
5、awk 在這里進(jìn)行修飾了下因?yàn)閐u -sm 是沒有顯示單位的 用du -sh 有單位但增加了排序的麻煩
6、 腳本和命令的書寫區(qū)別 因?yàn)槟_本用的for 語句是分條讀入的所以如果把sort -n | awk ‘{print $1″M”,” “,$2}’ 放到 du -sm $i 之后不會對順序產(chǎn)生變化,因?yàn)槊看尉蛯σ粭l進(jìn)行排序肯定最后的結(jié)果是沒有影響的 而命令是用管道的方式 每次都是一批處理完后交給后面進(jìn)行 注意腳本和命令的區(qū)別。
結(jié)果:
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