首页 > 技术文章 > crontab定时删除指定日期文件,只保留目录下最新的几个文件,其他均删除

xiaoyou2018 2019-10-28 09:39 原文

1、新建删除脚本 del.sh

#!/bin/bash

#保留文件数
ReservedNum=5              ##保留最新的五个文件
FileDir=/data/bak          ##文件目录
date=$(date "+%Y%m%d-%H%M%S")

FileNum=$(ls -l $FileDir|grep ^- |wc -l)

while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $FileDir| head -1)
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done 

2、添加自动运行任务crontab

如果未安装crontab,先安装

yum install crontabs -y

添加自动运行任务

crontab -e

* 0 * * * bash /home/sh/del.sh

意思是每天凌晨0点,自动运行 /home/sh文件夹下的del.sh脚本

 

 

 

查看任务

crontab -l


删除指定目录下的文件夹或者文件,指定天数
#!/bin/bash
find /home/  -name  'test*'  -type f -mtime +5 | xargs rm -rf

删除/home目录下5天以前的 文件名类似  test* 的文件

-type  d   文件夹

find /folder/deleteFile/ -name "*.*" |xargs rm -rf '*'

注意:如果你的文件夹下信息太多的话,使用rm命令可能会报错“ /bin/rm: Argument list too long ”

#rm -rf /folder/deleteFile/*

2、在xshell中 输入crontab –e打开配置文件,在文件中新增一个任务行,修改完成后保存,注意sh的路径为你的sh所在的路径

备注:crontab中增加的任务行的含义,可以通过vi /etc/crontab查看,以上*/5 * * * *代表的则是5min执行一次sh脚本

 

推荐阅读