我是unix新手,我想学习unix。有人给了我这个脚本。
#!/bin/bash
top3()
{
awk '{
pos=index( $0, "/" ) ;
if( pos >0 ){
print substr($0, pos) ;
} ;
}'
}
TMP=`basename "$0" ".sh" `
du -sh /var/* 2>>/dev/null | sort -hr >${TMP}.dirs
cat ${TMP}.dirs
head -3 ${TMP}.dirs | top3 >${TMP}.dirs3
rm -f ${TMP}.subdirs3
for dir in $( cat ${TMP}.dirs3 )
do
echo -e "Doing '${dir}' ..."
grep "${dir}"'$' ${TMP}.dirs >>${TMP}.subdirs3
du -sh ${dir}/* 2>>/dev/null | sort -hr >${TMP}.subdirs
head -3 ${TMP}.subdirs | awk '{ printf("\t%s\n", $0) }' >>${TMP}.subdirs3
echo "" >>${TMP}.subdirs3
done
echo ""
cat ${TMP}.subdirs3
基本上我想输出3个最大的目录和它的3个最大的子目录和我有一个困难的时间来理解脚本。有人能帮助简化这一点吗?谢谢提前
我尝试将路径从var更改为log,结果显示
error
我希望有一个更简单的剧本。
1条答案
按热度按时间3vpjnl9f1#
下面是一个更简单、可读性更强的解决方案:
示例输出
性能
对比分析