测试过了有点小问题,已经修改!
dir=dir_name #注意修改这里的文件夹名
cd $dir
ls XM_*_*.zip > temp1
cut -d . -f 1 temp1 >temp2 #去后缀名
sort -t _ -k 2n -k 3nr temp2 >temp3 #先按序列号再按时间排序
sort -t _ -k 2n -u temp3 >temp4
#这行是重点,-u选项是删除后续序列号重复的行在前一步已经将文件按时间排序,所以这行执行后就是需要保留的文件名
#本来这一步就差不多了,考虑到系统会定时产生文件,所以要把需要删除的文件名弄出来
grep -F -v -f temp4 temp3 >temp5 #求文件差集,temp3-temp4
cat temp5 | awk '{print $1".zip"}' | xargs rm -f #可以删除了 大功告成(测试的时候先把这行注释掉,看下几个temp文件是否是符合要求的我没测试)
rm -f temp* #最后把temp文件删除(测试的时候也要注释)
find $系统路径 -name "*.zip" -mtime +15 -exec rm -r {} \;