Для команды Loop Copy

У меня есть файл, FileToCopy.pbs, что я хотел бы, чтобы скопировать в несколько каталогов, изменяя линию под названием xxx в файле в pwd местоположение каталога, в котором файл должен быть скопирован.

Какой цикл я могу использовать, чтобы сделать эту команду?

Кроме того, некоторые из моих каталогов включают в себя * в конце имени пути каталога.

Более конкретно у меня есть структура каталогов:

/home/path1/dir1
/home/path1/dir2
/home/path1/dir3*
/home/path1/dir4*
.
.
etc

и хотел бы копировать FileToCopy.pbs во всех каталогах, так что у меня есть:

/home/path1/dir1/FileToCopy.pbs
/home/path1/dir2/FileToCopy.pbs
/home/path1/dir3*/FileToCopy.pbs
/home/path1/dir4*/FileToCopy.pbs

при изменении линия xxx в каждом скопированный файл из FileToCopy.pbs в каталог, в котором он находится. Так, например, линия xxx для FileToCopy.pbs находится в /home/path1/dir1/ должна быть изменена на /home/path1/dir1/

Спасибо.

1
задан 15.04.2020, 06:02

1 ответ

Я понял это.

Код выглядит следующим образом:

В каталоге /home/path1/

for i in *; do cp /directory/of/FileToCopy.pbs $i; cd $i; sed -i s#xxx#$(pwd)#g FileToCopy.pbs ; cd /home/path1/; done
.
0
ответ дан 15.04.2020, 06:03

Теги

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