shell删除并保留最新10个文件

Ikki25 2017-11-08 04:30:09
如图:每个名称的zip包N个,需要删除zip包,每个名称(aaa,bbb,ccc,ddd)只保留最新的十个zip包
自己写的执行不行: ls -t | awk -F '-' '{if(NR>11){print $1}}' | xargs rm -f

aaa-1.0.0-1.zip
aaa-1.0.0-2.zip
aaa-1.0.0-3.zip
aaa-1.0.0-4.zip
aaa-1.0.0-5.zip
...
aaa-1.0.0-20.zip
bbb-1.0.0-1.zip
bbb-1.0.0-2.zip
bbb-1.0.0-3.zip
bbb-1.0.0-4.zip
bbb-1.0.0-5.zip
...
bbb-1.0.0-50.zip
ccc-1.0.0-1.zip
ccc-1.0.0-2.zip
ccc-1.0.0-3.zip
ccc-1.0.0-4.zip
ccc-1.0.0-5.zip
...
ccc-1.0.0-80.zip
ddd-1.0.0-1.zip
ddd-1.0.0-2.zip
ddd-1.0.0-3.zip
ddd-1.0.0-4.zip
ddd-1.0.0-5.zip
...
ddd-1.0.0-100.zip
...全文
408 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38324891 2019-06-05
  • 打赏
  • 举报
回复
ls -t | awk -F '-' '{if(NR>3){print $1}}'|xargs -i rm -f {} \;
yangtuo250 2017-11-10
  • 打赏
  • 举报
回复
如果是标准的xyz*.zip,可以考虑正则取前三个alpha放到一个数组,然后再遍历,按照1楼方法做。
Ikki25 2017-11-09
  • 打赏
  • 举报
回复
引用 1 楼 zyzy257 的回复:
一般备份都是按天来或者安周、月来。 按天来就比较简单: find . -name "aaa*.zip" -mtime +10 find . -name "bbb*.zip" -mtime +10 find . -name "ccc*.zip" -mtime +10 find . -name "ddd*.zip" -mtime +10
但是包太多了,一个一个删太麻烦,想批量删;至少得有四五百不同名字的zip包
勤奋的沉沦 2017-11-08
  • 打赏
  • 举报
回复
一般备份都是按天来或者安周、月来。 按天来就比较简单: find . -name "aaa*.zip" -mtime +10 find . -name "bbb*.zip" -mtime +10 find . -name "ccc*.zip" -mtime +10 find . -name "ddd*.zip" -mtime +10

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧