零代码基础,写了两天终于写成了。成就感满满的。
需求:删除logs目录下的7天之前的*.log日志。*.out不能删。;7天内的*.log和*.out大文件删除部分,保留最新的5000行。
#!bin/bash
function red()
{
echo -e “\033[0;31m$1\033[0m”
}
function green()
{
echo -e “\033[0;32m$1\033[0m”
}
function blue()
{
echo -e “\033[0;34m$1\033[0m”
}
dirs=(/home/testspace/*/logs /home/testspace/*/*/logs /home/testspace/*/*/*/logs)
echo “”
green “文件夹总个数:${#dirs[*]}”
echo “”
for dir in ${dirs[*]}
do
if [ “$(ls -A $dir)” ] ;then
clog=$(ls -IR $dir|grep log |wc -l)
if [ “$clog” -gt “0” ];then
find $dir/*.log -mtime +7|xargs -r rm -rf
else
blue “$dir 没有.log文件”
fi
for log in $dir/*
do
if [ -f $log ];then
declare -i num
declare -i dnum
num=$(cat $log| wc -l)
dnum=$[ $num – 5000 ]
if [ “$dnum” -gt “0” ];then
red “$log 行数:$num ,需要删除一部分!”
#sed -n “1,$temp p” $log
sed -i “1,$dnum d” $log
else
green “$log 文件还小继续使用!”
fi
fi
done
fi
done