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

如何在Bash中将批量文件名的递增序号减1?

用Bash批量将文件序号减1的实现方法

完全可以用Bash实现这个需求,以下是具体的脚本和操作步骤:

核心逻辑

针对每个目标文件完成以下操作:

  • 提取文件名末尾的三位数字序号
  • 将序号转为整数并减1
  • 把新序号格式化为带前导零的三位数字
  • 替换原文件名中的序号完成重命名

实现脚本

for file in *.pdf; do
    # 提取文件名中的三位数字序号
    old_num=$(echo "$file" | sed -E 's/.*-([0-9]{3})\.pdf/\1/')
    # 强制十进制解析序号(避免前导零触发八进制解析错误),再减1
    new_num=$((10#$old_num - 1))
    # 将新序号格式化为三位带前导零的字符串
    new_num_str=$(printf "%03d" "$new_num")
    # 替换原文件名的序号部分,生成新文件名
    new_file=$(echo "$file" | sed -E "s/-[0-9]{3}\.pdf/-$new_num_str\.pdf/")
    # 先打印重命名命令(测试阶段用),确认无误后去掉echo执行实际重命名
    echo mv "$file" "$new_file"
    # mv "$file" "$new_file"
done

使用说明

  1. 直接在目标文件所在目录的终端中运行上述代码,或者保存为.sh脚本执行
  2. 测试阶段:保留echo mv的写法,运行后会输出所有拟执行的重命名操作,核对每个文件的新名称是否符合预期
  3. 执行重命名:确认无误后,删除echo,用mv "$file" "$new_file"完成实际文件重命名

额外提示

  • 如果需要只处理特定前缀的文件(比如仅处理kiril_lab_开头的文件),可以把*.pdf改成kiril_lab_*.pdf,针对性处理
  • 脚本依赖sed和printf工具,这两个工具在绝大多数Linux/macOS系统中默认自带

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:52:10