如何按顺序对名称从 1 到 4000 的文件运行脚本 4000 次?

如何按顺序对名称从 1 到 4000 的文件运行脚本 4000 次?

我有 4000 个文件,名称从 1 到 4000,包括 1 和 4000。

我写了下面的命令,我想对从 1 到 4000 的所有文件运行我编写的脚本 4000 次,所以我写道:

    for i in {1..4000}; do pymol -c script.pml; done

问题是,脚本中的数字本身每次都需要更改,我的脚本如下:

    load 1.pdb 

    remove resname GRM

    color green, resname G8LE

    load 0.pdb 

    color grey40, resname GRM

    rotate x, -45

    show spheres

    save 1.png

我需要将数字 1(加载后的第一行和保存后的最后一行)替换为从 1 到 4000 的所有数字。以便每次加载和处理下一个文件,然后用其适当的数字保存,依此类推。

您能指导我我应该在脚本和/或终端中进行哪些更改才能实现这一点吗?

谢谢,穆罕默德

答案1

如果可能的话,最好有一个 argv。我不知道 pml 脚本是否可以从终端给出参数。否则,您可以使用这个 hack 从 bash/terminal 或从运行它的 .sh 脚本更改 pml 脚本。这将在运行 pml 脚本之前相应地更改它。

for i in {1..40000}
do
    echo Evaluating for i = $i

    # change the script 
    sed -i "s/.*load.*/load $i.pdb;/g" test.pml # Change the text inside the file
    sed -i "s/.*save.*/save $i.png;/g" test.pml # Change the text inside the file

    # <code to run the pml file>

done

如果有帮助的话请告诉我:)

评论后编辑:

为了区分加载命令,请在 pml 脚本的第一行中放置额外的空格并使用它。

sed -i "s/.*load  .*/load  $i.pdb;/g" test.pml # Change the text inside the file

相关内容