批量复制Shell脚本时自动递增修改指定三位编号的实现方法
批量生成带自增编号脚本的实现方法
你需要的100份带递增三位编号的脚本,可以通过以下两种极简方案实现,不需要手动逐个修改文件:
方案一:Shell 原生实现(无依赖,直接在Linux终端运行即可)
- 先把你提供的初始版本脚本(编号为001的版本)保存为
template.sh,放到专门的工作目录下。 - 在同目录下新建生成脚本
gen.sh,写入以下代码:
#!/bin/bash for i in {1..100} do # 将数字格式化为3位,不足位数自动补前导零 num=$(printf "%03d" $i) # 替换模板中的固定编号,输出为独立脚本文件 sed "s|--dir \$path/outputs/001|--dir \$path/outputs/$num|g" template.sh > run_${num}.sh # 若需要生成的脚本自带可执行权限,保留下面这行即可 chmod +x run_${num}.sh done
- 给生成脚本加执行权限后直接运行:
chmod +x gen.sh ./gen.sh
运行完成后,目录下会直接生成run_001.sh到run_100.sh共100个脚本,每个脚本内的--dir路径编号和文件名编号一一对应。
方案二:Python 实现(逻辑直观,适合熟悉Python的场景)
- 同样先把初始脚本保存为
template.sh放在工作目录下。 - 同目录新建
gen.py,写入以下代码:
# 读取模板文件内容 with open("template.sh", "r", encoding="utf-8") as f: tpl = f.read() # 遍历1-100生成对应脚本 for i in range(1, 101): num = f"{i:03d}" # 替换固定编号为当前自增编号 content = tpl.replace("--dir $path/outputs/001", f"--dir $path/outputs/{num}") with open(f"run_{num}.sh", "w", encoding="utf-8") as f: f.write(content)
- 终端直接运行脚本即可:
python3 gen.py
生成效果和Shell方案完全一致。
注意:上述替换逻辑是精准匹配模板里的初始路径字符串
--dir $path/outputs/001,如果你后续修改了模板里的初始输出路径,要同步修改生成脚本里的匹配内容,避免替换失效。
内容的提问来源于stack exchange,提问作者Pythonstudent
相关产品推荐
相关产品推荐

