2

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

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

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

4

2 回答 2

2

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

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

请小心使用此命令,您可以检查使用了哪些匹配项:

print -rl -- $files[1,-9]
于 2012-09-10T14:13:43.613 回答
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

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

于 2012-09-10T12:50:51.453 回答