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

Bash批量重命名csv文件:将文件名序号x改为x+10的实现方法

批量重命名A_B_x.csv为A_B_{x+10}.csv的Bash实现方案

问题说明

需要将命名规则为A_B_x.csv(x取值1-10)的csv文件,统一修改为A_B_{x+10}.csv,例如A_B_1.csv改为A_B_11.csv。原有代码仅硬编码替换了1.csv为11.csv,没有提取文件名中的序号x做算术运算,因此无法适配所有序号的文件。

推荐实现代码(纯Bash内置能力,无外部依赖)

for f in A_B_*.csv; do
    # 提取文件名中的序号x:先去掉前缀"A_B_",再去掉后缀".csv"
    x=${f#A_B_}
    x=${x%.csv}
    # 计算新序号
    new_x=$((x + 10))
    # 拼接生成新文件名
    new_name="A_B_${new_x}.csv"
    # 执行重命名,-v参数可打印修改日志
    mv -v -- "$f" "$new_name"
done

代码说明

  • 用Bash内置的参数展开提取序号,不需要额外调用sed等外部工具,执行效率更高、逻辑更易读
  • 双引号包裹变量是通用最佳实践,可兼容带空格、特殊字符的文件名场景
  • 命令中的--用于处理少数以-开头的异常文件名,避免mv将文件名识别为参数

预校验方法

正式执行重命名前,可先将mv改为echo mv预览修改效果,确认符合预期后再去掉echo实际运行:

for f in A_B_*.csv; do
    x=${f#A_B_}
    x=${x%.csv}
    new_x=$((x + 10))
    new_name="A_B_${new_x}.csv"
    echo mv "$f" "$new_name"
done

其他可选实现

如果你的系统预装了perl版本的rename工具(大部分Linux发行版、MacOS通过brew安装后都支持),可以用更短的代码实现:

rename 's/A_B_(\d+)\.csv/"A_B_".($1+10).".csv"/e' A_B_*.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:57:03