Как запустить похожие команды с файлами в десяти отдельных папках?

У меня есть папка 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
задан 17 August 2019 в 15:05

1 ответ

Можно использовать цикл оболочки для этого. Я покажу код сначала, но считайте протесты ниже перед использованием его.

#!/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}s где-либо еще. Я также рекомендую создать резервную копию всех файлов, которые были бы затронуты путем выполнения его.

Вы упомянули, что Вам нужно к командам выполнения "В каждой dXXX папке", но Вы используете пути, которые сами имеют префиксы как y2015/d001/. Таким образом, я предположил, что Вы на самом деле не хотите cd в каждый каталог - выполнение так помешало бы тем путям работать.

Можно сохранить это в файле script. (Вы, вероятно, захотите назвать это чем-то значимым, но я не знаю хорошее имя, потому что я не знаю более широкий контекст, в котором Вы выполняете эти команды.) Затем делают исполняемый файл сценария с chmod +x script и выполненный это с ./script.

Это использует a for циклрасширением фигурной скобки) и расширением параметра. Я записал ${i} вместо $i потому что в некоторых местах в сценарии, такой как hyde${i}0.15d.Z, запись $i вместо этого попытался бы развернуть другое (по-видимому, сброс) переменная $i0. Фигурные скобки в ${i}, который является простым использованием расширения параметра, не имейте в виду то же самое как фигурные скобки в {001..010}, который является диапазоном для расширения фигурной скобки.

1
ответ дан 7 December 2019 в 14:59

Другие вопросы по тегам:

Похожие вопросы: