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

如何用bash/shell命令修改文件名数字序列,将1~1000改为1001~2000

批量修改序列文件名解决方案

原代码错误原因

你编写的双层for循环逻辑存在严重问题:外层每遍历1个11000的i值,内层都会完整遍历10012000的所有j值,单个源文件会被执行1000次mv操作,所有源文件最终都会被反复覆盖,最后仅会剩下s_nn_2000.txt这一个文件,完全不符合需求。

可行解决方法

方案1:Bash原生单循环(兼容性最高,无需额外工具)

直接在单循环内做算术运算,每个原序号i对应的新序号为i+1000,对应命令如下:

for i in {1..1000}
do
  mv s_nn_"$i".txt s_nn_$((i + 1000)).txt
done

也可以简写为单行版本:

for i in {1..1000}; do mv s_nn_${i}.txt s_nn_$((i+1000)).txt; done

方案2:rename工具快速实现(适合预装Perl版rename的发行版,如Debian、Ubuntu)

用正则匹配原文件名中的序号,直接做加法替换:

rename 's/s_nn_(\d+)\.txt/sprintf("s_nn_%d.txt", $1 + 1000)/e' s_nn_*.txt

注意事项

  • 执行实际重命名操作前,建议先将命令中的mv替换为echo mv,预览输出的重命名对应关系是否正确,确认无误后再去掉echo执行实际操作,避免文件误覆盖。
  • 如果当前目录下存在其他不符合s_nn_*.txt命名规则的文件,执行命令前建议先过滤文件范围,避免误操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:09