shell脚本根据最后修改时间删除文件
程序员文章站
2022-03-03 12:36:30
...
一、遍历指定目录下的所有文件包括子文件夹中的文件,如果文件的最后修改时间距离现在超过1小时则删除该文件
如:遍历 /var/local/temp/ 和 /var/download/attach/ 目录下的所有文件(包括子文件夹中的文件),如果文件的最后修改时间距离现在超过1小时则删除该文件,只删除文件,不会删除文件夹
testClear.sh:
#!/bin/bash
function clear(){
for file in ` ls $1 `
do
if [ -d $1"/"$file ];then
clear $1"/"$file
else
a=`stat -c %Y $1"/"$file`
b=`date +%s`
if [ $[ $b - $a ] -gt 3600 ];then
rm -rf $1"/"$file
fi
fi
done
}
dirPath1="/var/local/temp/"
dirPath2="/var/download/attach/"
clear $dirPath1
clear $dirPath2
二、遍历指定目录下的所有文件包括子文件夹中的文件
(1)对于指定目录下的文件最后修改时间距离现在超过1小时则删除该文件。比如/usr/local/testFile/下有a.txt,它的最后修改时间距今超过一小时则将删除;
(2)对于指定目录下的子文件夹下的文件,如果该子文件夹下的所有文件最后修改时间距离现在都超过了1小时则删除该子文件夹(比如/usr/local/testFile/下有文件夹files,files文件夹下有b.txt和c.txt,只有b.txt和c.txt最后修改时间距离现在都超过了1小时才会删除files文件夹),否则该子文件夹和其中文件不删除;
testClear.sh:
#!/bin/bash
function clear(){
if [ -d $1 ];then
for f in ` ls $1 `
do
file=$1$f
a1=`stat -c %Y $file`
b1=`date +%s`
if [ $[ $b1 - $a1 ] -gt 3600 ];then
rm -rf $file
fi
done
else
echo "目录不存在"
fi
}
dirPath1="/usr/local/testFile/"
dirPath2="/usr/local/testFile1/"
clear $dirPath1
clear $dirPath2
三、定时执行:
打开定时表编辑界面
crontab -e
将上面的shell脚本加入其中
每一小时执行一次
0 */1 * * * /usr/local/testClear.sh
上一篇: 读取文件的最后修改时间的方法
下一篇: jsessionid的解决办法