我有一个文件夹y2015
,其中有十个子目录(,,,d001
... ,)。d002
d003
d010
在每个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
文件夹d003
,d004
,...... 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}