当前位置: 技术问答>linux和unix
求教awk从文件名抓出日期
来源: 互联网 发布时间:2016-12-03
本文导语: 现在有一系列文件 文件名如下 2011_05_22_db.tar.gz 2011_05_23_db.tar.gz 2011_05_24_db.tar.gz 2011_05_25_db.tar.gz 2011_05_26_db.tar.gz 2011_05_27_db.tar.gz ......... 复制代码 这是些数据库的备份文件 我现在想通过awk抓出这种格式内的日期 然...
现在有一系列文件 文件名如下
2011_05_22_db.tar.gz
2011_05_23_db.tar.gz
2011_05_24_db.tar.gz
2011_05_25_db.tar.gz
2011_05_26_db.tar.gz
2011_05_27_db.tar.gz
.........
复制代码
这是些数据库的备份文件 我现在想通过awk抓出这种格式内的日期
然后只保留7天的数据库备份...
ps:只由文件名内包含的信息来确定日期
求教各位高手
2011_05_22_db.tar.gz
2011_05_23_db.tar.gz
2011_05_24_db.tar.gz
2011_05_25_db.tar.gz
2011_05_26_db.tar.gz
2011_05_27_db.tar.gz
.........
复制代码
这是些数据库的备份文件 我现在想通过awk抓出这种格式内的日期
然后只保留7天的数据库备份...
ps:只由文件名内包含的信息来确定日期
求教各位高手
|
其实用文件自身的修改时间应该也可以
find . -name "*.gz" -mtime +7 -exec rm {} ;
删除修改时间超出7天的文件
find . -name "*.gz" -mtime +7 -exec rm {} ;
删除修改时间超出7天的文件
|
#!/bin/bash
sevendaysago=$(date -d "-7 day" +"%Y%m%d")
for file in *.gz
do
filedate=$(echo $file | awk -F'_' '{print $1$2$3}')
if [[ $filedate -lt $sevendaysago ]];then
/bin/rm -f $file
fi
done