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

Bash批量重命名pdb文件 实现文件名序号加1的简易命令方案

Bash批量重命名mol*.pdb文件(序号统一+1)

需求背景

当前工作目录下存在一批序号从0起始的pdb格式文件,初始命名如下:

mol0.pdb
mol1.pdb
mol2.pdb
...
mol888.pdb

需要将所有文件的文件名序号统一加1完成重命名,最终效果如下:

mol1.pdb
mol2.pdb
mol3.pdb
...
mol889.pdb

要求方案可直接在bash交互终端执行,无需单独编写脚本文件存储后运行,可基于常规for循环框架实现。

前置提醒

  • 执行前请确认当前目录不存在mol[最大序号+1].pdb这类重名文件,避免原有文件被覆盖
  • 禁止从序号0开始正序重命名:正序处理时,mol0.pdb改名为mol1.pdb会直接覆盖还未处理的原mol1.pdb,造成文件丢失,必须从最大序号文件开始倒序处理。

可直接执行的命令

写法1:沿用参考的文件遍历循环框架

不需要提前统计文件序号范围,自动识别所有符合命名规则的文件倒序处理,通用性最强:

for file in $(ls -v mol*.pdb | tac)
do
  num=${file#mol}
  num=${num%.pdb}
  mv "$file" "mol$((num+1)).pdb"
done

逻辑说明:

  • ls -v mol*.pdb 按文件名里的数字做自然排序,输出从小到大排列的文件列表
  • tac 将列表倒序,实现从最大序号文件开始遍历
  • ${file#mol} 去掉文件名开头的mol前缀,${num%.pdb}去掉后缀.pdb,提取纯数字序号
  • $((num+1)) 做整数运算得到新序号,直接执行重命名

写法2:已知最大序号为888的极简一行命令

固定场景下可以直接用seq生成倒序序号序列,整行复制到终端回车即可运行:

for i in $(seq 888 -1 0); do mv mol${i}.pdb mol$((i+1)).pdb; done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:33:11