xhell 脚本

我的目录结构是这样的

repos --

        文件1

        文件2

        文件3

功能:定时清理,保存文件夹1,2,3 下面的最新的五个文件,然后将老文件删除。

一开始是这样写的,先指定文件夹路径,然后配置上定时任务,这样是可以解决定时删除老文件,然后保留最新的文件。

##/sur/bin
##描述:定时删除某个文件夹下面的文件
##作者:张川
######################################
######################################

##定义参数
##需要清理的文件夹路径
file_path=/home/yunovo/test
##需要保存文件的个数
file_num=5

## ls -t *|tail -2
###判断当该文件夹下面文件大于 ${file_num} 的时候执行。

if [  -d "${file_path}"  ];then

        num=`ls -l |grep "^-"|wc -l`
        echo ${num}
        if [ ${num} -gt ${file_num} ];then

                for i in `ls -t *|tail -1`
                do
                        echo "${file_path}/$i"
                done

        fi



        else
        echo "该文件路径错误"

fi

 

但是有个弊端,就是说如果要删除多个文件的目录,你得配置配置很多次。比如说我这里有文件夹1,2,3.我得对这几个文件都配置。配置过多,不能体现脚本的优势,所以后面进行了改进。直接扫描父文件夹,然后对子文件夹进行扫描。代码如下,我还是先定义一个文件夹目录。

##/sur/bin
##描述:定时删除某个文件夹下面的文件
##      只保留自定义天数
##作者:张川
######################################
######################################

##定义参数
##需要清理的文件夹路径
file_path=/home/yunovo/test/repos
##需要保存文件的个数
file_num=5
date=`date '+%Y%m%d%H%M%S'`




## ls -t *|tail -2
###判断当该文件夹下面文件大于 ${file_num} 的时候执行。

echo "=======================清理日志开始=======${date}=================="  >> rizhi.log


if [  -d "${file_path}"  ];then
     find ${file_path}/*  -maxdepth 1  -type d | while read dir;
        do
          count=$(find "${dir}" -type f | wc -l)
          echo "${dir}:${count}" >>rizhi.log
            if [ ${count} -gt ${file_num}  ];then

                #       num=`ls -l |grep "^-"|wc -l`
                #       echo ${num}
                #       if [ ${num} -gt ${file_num} ];then

                                echo "---${dir}---" >>1.txt
                                for i in `ls ${dir}   -t |tail -$((${count}-${file_num}))`
                                do
                                        echo -e  "${dir}/$i \n"  >> rizhi.log
                                        rm -rf ${dir}/$i
                                done

                #       fi
          fi
        done

                else
                echo "该文件路径错误"

fi

echo "=======================清理日志结束=======${date}=================="  >> rizhi.log

 

用以记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值