我的任务是从我们的 Linux 数据库中删除旧的备份文件(除了最新的 3 个)。由于我们有多种备份,我必须为每种备份类型保留至少 3 个备份文件。
我的脚本应该将具有相似(匹配)名称的所有文件组合在一起,并删除除最后 3 个文件之外的所有文件(我假设操作系统将为我对这些文件进行排序,因此最新的备份也将是最后的备份)
这些文件的格式可以是任意数字,project_name.000000-000000.svndmp.bz2
也可以是任意名称。前 6 位数字是名称的一部分,而后 6 位数字描述备份的版本。0
project_name
到目前为止,我的代码如下所示:
for i in *.svndmp.bz2 # only check backup files
do
nOfOccurences = # Need to find out, how many files have the same name
currentFile = 0
for f in awk -F"[.-]" '{print $1,$2}' $i # This doesn't work
do
if [nOfOccurences - $currentFile -gt 3]
then
break
else
rm $f
currentFile++
fi
done
done
我知道,我的脚本可能会尝试删除旧版本的备份 4 次,然后再进行下一次备份。我不是在寻找性能或效率(我们没有那么多备份)。
我的代码是在网上搜索了 4 个小时的结果,而我的谷歌查询已经用完了(我的老板开始想知道为什么我仍然没有回到我的日常任务中)
任何人都可以给我意见,我可以如何解决我的问题?
- 寻找
nOfOccurences
- 让 awk 找到适合模式的文件
"$1.$2-*"