Bash脚本在按字母顺序排序时删除除N个文件以外的所有文件

sgt*_*oyd 11 linux bash ubuntu

在标题中很难解释.

我有一个每天运行的bash脚本将一个文件夹备份到一个zip文件中.zip文件名为world YYYYMMDD.zip,YYYYMMDD是备份日期.我想要做的是删除除最近的5个备份以外的所有备份.按字母顺序对文件进行排序将首先列出最旧的文件,因此我基本上需要在按字母顺序排序时删除除最后5个文件以外的所有文件.

aio*_*obe 19

以下行应该可以解决问题.

ls -F world*.zip | head -n -5 | xargs rm
Run Code Online (Sandbox Code Playgroud)
  • ls -F:按字母顺序列出文件
  • head -n -5:过滤掉除最后5个之外的所有行
  • xargs rm:删除每个给定的文件.

  • 呃...包括`ls -AF world*.zip`会更好. (2认同)