我有一个文件夹 /var/backup,cronjob 在其中保存数据库/文件系统的备份。它包含一个 latest.gz.zip 和许多名为 timestamp.gz.zip 的旧转储。该文件夹越来越大,我想创建一个执行以下操作的 bash 脚本:
- 保留最新的.gz.zip
- 保留最年轻的 10 个文件
- 删除所有其他文件
不幸的是,我不是一个好的 bash 脚本编写者,所以我不知道从哪里开始。谢谢你的帮助。
我有一个文件夹 /var/backup,cronjob 在其中保存数据库/文件系统的备份。它包含一个 latest.gz.zip 和许多名为 timestamp.gz.zip 的旧转储。该文件夹越来越大,我想创建一个执行以下操作的 bash 脚本:
不幸的是,我不是一个好的 bash 脚本编写者,所以我不知道从哪里开始。谢谢你的帮助。
在 zsh 中,您可以使用扩展标志来完成大部分操作:
files=(*(.Om))
rm $files[1,-9]
请小心使用此命令,您可以检查使用了哪些匹配项:
print -rl -- $files[1,-9]
您应该学习使用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
当然你需要改进很多,这只是为了提供想法。