You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Bash备份删除函数,仅保留最新5个备份文件?

修改Bash函数保留最新5个备份文件

下面是修改后的delete_old_backup_files函数,实现删除匹配类型的备份文件但保留最新创建的5个:

delete_old_backup_files() {
    local fpath="$1"
    local fexpr="$2"
    local keep_count=5

    # 查找匹配文件,按修改时间逆序排序,跳过前5个后删除剩余文件
    find "$fpath" -name "${fexpr##*/}" -type f -printf '%T@ %p\n' |
        sort -nr |
        awk -v keep="$keep_count" 'NR > keep {print $2}' |
        xargs -r rm -f
}

关键步骤说明:

  • find命令格式化输出:用-printf '%T@ %p\n'输出每个文件的**修改时间戳(秒级)**和完整路径,为后续排序提供可靠依据。
  • 逆序排序:sort -nr按时间戳数值从大到小排序,确保最新的文件排在最前面。
  • 筛选待删文件:awk跳过前keep_count行(即最新的5个文件),只输出需要删除的文件路径。
  • 安全删除:xargs -r的-r参数避免在没有待删文件时执行rm,防止出现"rm: missing operand"的错误。

兼容与调整说明:

  • 所有变量都加了双引号,避免文件名包含空格、特殊字符时出现异常。
  • 若你的系统find不支持%T@(部分老版本系统),可以替换为stat命令(Linux环境):
    find "$fpath" -name "${fexpr##*/}" -type f -exec stat -c '%Y %n' {} \; |
        sort -nr |
        awk -v keep="$keep_count" 'NR > keep {print $2}' |
        xargs -r rm -f
    
  • 要调整保留的文件数量,直接修改keep_count变量的值即可。

内容的提问来源于stack exchange,提问作者bsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:03:38