求教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
- .........
然后只保留7天的数据库备份...
ps:只由文件名内包含的信息来确定日期
求教各位高手
作者: chiyiangel 发布时间: 2011-05-30
作者: waker 发布时间: 2011-05-30
我想用的是awk抓出日期 然后只保留7天内的备份文件 删除其他的... 请问这个脚本该如何写
作者: chiyiangel 发布时间: 2011-05-30
- ls -l | cut -d . -f 1 | tail -7
作者: liion631818 发布时间: 2011-05-30
作者: zooyo 发布时间: 2011-05-30
非常感谢这位大哥 但是现在有个问题 我目录下不光有这些数据备份文件 还有些其他的文件
作者: chiyiangel 发布时间: 2011-05-30
非常感谢 但是因为里面有些文件的mtime 和 文件名上标注的日期不一定一样 所以肯定要用awk 自己从文件名中提取时间戳
作者: chiyiangel 发布时间: 2011-05-30
给你的脚本只能获取最后7天的文件,不能删除啊,貌似不能满足你的要求,你还是看看上面大牛们给你的回复吧
- ls -1 2011* | cut -d . -f 1 | tail -7
作者: liion631818 发布时间: 2011-05-30
回复 chiyiangel
awk(已测试)
- $ awk 'BEGIN{"date +%Y%m%d -d \"7 days ago\""|getline f_d; while (("ls *.gz"|getline f_name)>0) {f=gensub(/(....)_(..)_(..).*/,"\\1\\2\\3",1,f_name);if(f<f_d) {system("rm " f_name)}}}'
作者: yinyuemi 发布时间: 2011-05-30
你先把你那一系列文件怎样获取,或者有什么规则列出来,不然怎样知道哪些文件是你需要的,哪些是需要删除的
作者: liion631818 发布时间: 2011-05-30