删除文件夹中第180个以后文件的shell语句
在A文件目录下有很多数据文件以“XXX年月日时分秒”格式命名的文件需求是:按文件名中新到旧的日期排序删除掉180个以后(不包括180)的文件...
在A文件目录下有很多数据文件以“XXX年月日时分秒”格式命名的文件
需求是:按文件名中新到旧的日期排序删除掉180个以后(不包括180)的文件 展开
需求是:按文件名中新到旧的日期排序删除掉180个以后(不包括180)的文件 展开
1个回答
展开全部
文件名称格式,XXX年月日时分秒。
1. 每个文件的“年月日时分秒”格式是否统一,都是 YYYYMMDD 这样的?
2. 如果时间格式不统一,那就需要知道XXX是数字还是字母。
1. 每个文件的“年月日时分秒”格式是否统一,都是 YYYYMMDD 这样的?
2. 如果时间格式不统一,那就需要知道XXX是数字还是字母。
追问
统一,件名后的时间是获取系统当前时间拼成的
追答
用一条语句来解决吧:
num=181
ls | sed -r 's/(.*)([0-9]{8})$/\2\1/' | sort -nr | sed -nr $num',${s/^([0-9]{8})(.*)/\2\1/;p}' | xargs rm -f
先用sed将XXXYYYYMMDD改为YYYYMMDDXXX,即将时间提到前面,方便用sort排序。
sort排序后再用sed将从181个开始的文件名改回来,用rm删除。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询