定时删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件

Posted gaobo543013306

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件相关的知识,希望对你有一定的参考价值。

shell 脚本:

#!/bin/bash

now=`date "+%Y-%m-%d_%H:%M:%S"`      #获取当前时间 echo "当前时间: "$now

now=`date +%s`            #获取当前时间戳   单位:秒 echo "当前时间戳: "$now

function getdir(){          #遍历文件夹和文件夹下所有的文件

#    echo "删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件"    

for element in `ls $1`    

     do         dir_or_file=$1"/"$element        

           if [ -d $dir_or_file ]        #如果是目录,遍历该目录下的所有文件        

           then            

           getdir $dir_or_file $2        

           elif [ -f $dir_or_file ]       #如果是文件,判断最后修改时间大于当前时间指定天数就删除        

           then            

           zhxgsj=`stat -c %Y $dir_or_file`    #获取文件最后修改时间           

                     if [ `expr $now - $zhxgsj` -gt `expr 24 * 60 * 60 * $2` ]           

                     then           

                     var=`/bin/rm -rf $dir_or_file`           

                     echo $var           

                     echo "删除文件: "$dir_or_file" 最后修改时间: "`date -d @$zhxgsj  "+%Y-%m-%d"`           

                     fi       

             fi  

    done

}

dir="/home/log"

getdir $dir 30   

dir="/mydata/tomcat-7.0.79/logs"

getdir $dir 2

 

添加到定时任务:

# crontab -e

添加  00 03 * * * bash /home/clear.sh

# /sbin/service crond restart //重启服务

 

 

 

 

 

 

 

 

 

 

 

 

 

 

安装crontab:

yum install crontabs

服务操作说明:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

以上是关于定时删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件的主要内容,如果未能解决你的问题,请参考以下文章

定时删除tomcat日志报错

Linux定时删除日志文件/文件夹

ELK 之定时删除日志数据

Windows 定时删除指定路径下N天前的日志文件

用for循环编写删除文件的shell脚本

请问:如何批处理删除文件夹及其所有子文件夹下N天前所有文件?