通过 bash 处理编号文件

通过 bash 处理编号文件

我有一组文件 a.rst.1、a.rst.2、....、a.rst.5000

我需要为每一个运行此命令:

ambpdb -p prmtop < a.rst.x > a.pdb.x

其中 x 代表该文件的编号。有没有一种简单的方法可以通过 bash 来做到这一点?

答案1

您可以尝试与内置等效的bash {1..5000}构造:bash$(seq 1 5000)

for i in {1..5000}; do
   ambpdb -p prmtop < a.rst.$i > a.pdb.$i
done

如果上限太大,一种替代方法是使用简单的循环计数器:

i=1
while [ $i -le 5000 ]; do
    ambpdb -p prmtop < a.rst.$i > a.pdb.$i
    i=$((i+1))
done

答案2

另一种方式:

for f in ./a.rst.*; do
  ambpdb -prmtop < "$f" > "a.pdb.${f##*.}"
done

相关内容