如何编写支持增量批次创建文件的Shell脚本 重运行从最后编号延续
批次自动续号文件创建Shell脚本实现
功能说明
- 支持自定义文件名前缀、每批次生成的文件数量
- 首次运行从编号1开始创建文件,后续运行自动承接上一次最后一个文件的编号继续生成,无需手动调整参数
- 运行中断后重启也能正常接续上次的编号生成
完整可运行脚本
#!/bin/bash # 可自定义配置项 FILE_PREFIX="XXXX" # 生成文件的统一前缀 BATCH_SIZE=10 # 每次运行脚本生成的文件数量 COUNT_FILE=".last_file_id" # 记录上次最后编号的隐藏存储文件,无需手动修改 # 读取上次运行的最后编号,无历史记录则从1开始 if [ -f "$COUNT_FILE" ]; then LAST_ID=$(cat "$COUNT_FILE") START_ID=$((LAST_ID + 1)) else START_ID=1 fi END_ID=$((START_ID + BATCH_SIZE - 1)) # 批量生成目标文件 for ((current_id=START_ID; current_id<=END_ID; current_id++)) do touch "${FILE_PREFIX}${current_id}" echo "已生成文件:${FILE_PREFIX}${current_id}" done # 写入本次的最后编号,供下次运行使用 echo "$END_ID" > "$COUNT_FILE" echo "本次批次执行完成,共生成 ${BATCH_SIZE} 个文件,编号范围:${START_ID} ~ ${END_ID}"
使用说明
- 按需修改脚本开头的
FILE_PREFIX和BATCH_SIZE两个参数即可,比如要每批生成20个前缀为report的文件,就把FILE_PREFIX设为report,BATCH_SIZE设为20 - 脚本运行后会在当前目录生成隐藏的
.last_file_id文件用于记录编号,不要删除或修改该文件,否则下次运行会重新从1开始编号 - 如果需要重置编号从1开始,直接删除
.last_file_id文件再运行脚本即可
原代码问题说明
你原来编写的代码主要存在三个问题:
- 没有持久化存储上次的最后编号,每次运行都会从1开始生成,无法实现续号需求
- 循环内的
((NUMBER+5))逻辑仅做了数值计算没有赋值给变量,不会生效,且break逻辑会提前终止循环,无法生成预期数量的文件 - 编号逻辑硬编码,调整批次数量需要修改多处代码,可维护性差
内容的提问来源于stack exchange,提问作者kiddjsh
相关产品推荐
相关产品推荐

