使用shell删除最旧的文件

时间:2012-09-10 12:46:51

标签: shell

我有一个文件夹/ var / backup,其中cronjob保存了数据库/文件系统的备份。它包含latest.gz.zip和许多旧的转储,名称为timestamp.gz.zip。 该文件夹越来越大,我想创建一个执行以下操作的bash脚本:

  • 保持latest.gz.zip
  • 保留最年轻的10个文件
  • 删除所有其他文件

不幸的是,我不是一个好的bash脚本,所以我不知道从哪里开始。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

在zsh中,你可以使用扩展标志来完成大部分操作:

files=(*(.Om))
rm $files[1,-9]

小心使用此命令,您可以查看与之匹配的内容:

print -rl -- $files[1,-9]

答案 1 :(得分:1)

您应该学会使用find命令,可能与xargs一起使用,类似于

 find /var/backup -type f -name 'foo' -mtime -20 -delete

或如果您的find没有-delete

 find /var/backup -type f -name 'foo' -mtime -20 -print0 | xargs -0 rm -f

当然,你需要改进很多,这只是为了提供想法。