如何使用Bash脚本按序访问编号序列文件并生成对应命名的输出文件
Bash按序号遍历pdb文件并生成指定格式输出的解决方案
问题原因
你当前脚本输出不符合预期的核心原因是crysol_30工具默认会自动识别输入文件名中的序号,按自身的补零规则生成输出前缀,没有使用你期望的原始序号格式。
修正后的运行脚本
你可以通过手动指定输出前缀的方式,强制输出文件名符合要求,修正后的脚本如下:
#!/bin/bash for i in {0..10000} do # 仅在输入文件存在时运行命令,避免不必要的报错 if [ -f "op_${i}.pdb" ]; then crysol_30 op_${i}.pdb --prefix "op_${i}" fi done
已有错误命名文件批量修正方案
如果你已经生成了大量带错误前缀的输出文件,可以用以下命令批量重命名为目标格式:
# 重命名-water.pdb后缀的文件 rename 's/op_0*([0-9]+)-/op_$1-/' op_*-water.pdb # 重命名其余四类后缀的文件 rename 's/op_0*([0-9]+)\./op_$1./' op_*.{log,int,alm,abs}
注:上述rename命令为Perl版本,是绝大多数Linux发行版的默认预装版本,可直接使用。
内容的提问来源于stack exchange,提问作者user13120453
相关产品推荐
相关产品推荐

