【发布时间】:2023-02-20 19:36:59
【问题描述】:
我是 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,它说
我希望有一个简单的脚本。
【问题讨论】: