如何对十个不同文件夹中的文件运行类似的命令?

如何对十个不同文件夹中的文件运行类似的命令?

我有一个文件夹y2015,其中有十个子目录(,,,d001... ,)。d002d003d010

在每个dXXX文件夹中,我必须运行如下所示的命令:

gd2e.py -mkTreeS myKinTree
rm /myKinTree/ppp_0.tree
cp /home/user/GipsyX-1.1/share/gd2e/DefaultTreeSeries/myKinTree/ppp_0.tree  /myKinTree/
rinex2staDb.py y2015/d001/hyde0010.15d.Z
rnxEditGde.py -data y2015/d001/hyde0010.15d.Z -rate 30
gd2e.py -drEditedFile data.dr.gz -recList HYDE -staDb fromRnx.sta_db -HighRate -trees myKinTree/

d002执行完上述命令后我需要返回到d001

请小心,因为d002我想用 等替换rinex2staDb.py y2015/d001/hyde0010.15d.Z其他rinex2staDb.py y2015/d002/hyde0020.15d.Z文件夹d003d004,...... d010

答案1

您可以使用 shell 循环来实现这一点。我将首先展示代码,但在使用之前请阅读下面的注意事项。

#!/bin/bash

for i in {001..010}; do
    gd2e.py -mkTreeS myKinTree
    rm /myKinTree/ppp_0.tree
    cp /home/user/GipsyX-1.1/share/gd2e/DefaultTreeSeries/myKinTree/ppp_0.tree  /myKinTree/
    rinex2staDb.py "y2015/d${i}/hyde${i}0.15d.Z"
    rnxEditGde.py -data "y2015/d${i}/hyde${i}0.15d.Z" -rate 30
    gd2e.py -drEditedFile data.dr.gz -recList HYDE -staDb fromRnx.sta_db -HighRate -trees myKinTree/
done

您可能需要修改此脚本。您应该仔细检查以确保每个要插入值的位置001都有010,并且其他地方没有${i}${i}我还建议备份所有会受其运行影响的文件。

您提到您需要“在每个 dXXX 文件夹中”运行命令,但您使用的路径本身带有前缀,如y2015/d001/。因此我假设您确实这样做了不是想要cd进入每个目录——这样做会使这些路径无法正常工作。

您可以将其保存在文件中script。(您可能想给它起一个有意义的名字,但我不知道一个好名字,因为我不知道您运行这些命令的更广泛的上下文。)然后使用使脚本可执行并使用运行它。chmod +x script./script

这使用一个for循环(和括号扩展) 和参数扩展。我之所以写成${i}而不是 ,是$i因为在脚本中的某些地方,例如hyde${i}0.15d.Z,写成$i会尝试扩展不同的(可能未设置的)变量$i0。 中的括号(参数扩展的简单用法)与 中的括号(括号扩展的范围)的含义${i}不同。{001..010}

相关内容