删除文件夹中第180个以后文件的shell语句

在A文件目录下有很多数据文件以“XXX年月日时分秒”格式命名的文件需求是:按文件名中新到旧的日期排序删除掉180个以后(不包括180)的文件... 在A文件目录下有很多数据文件以“XXX年月日时分秒”格式命名的文件
需求是:按文件名中新到旧的日期排序删除掉180个以后(不包括180)的文件
展开
 我来答
百度网友5311d79
2014-12-12 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3226万
展开全部
文件名称格式,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删除。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式