Переименуйте файлы того же имени в нескольких подкаталогах

У меня есть несколько каталогов с уникальными именами идентификации. В каждом из них далее identicle подкаталоги, сгенерированные автоматизированным аналитическим программным обеспечением. В одном из этих подкаталогов файл, который я хочу выбрать и переместить в уникальный dir, называя их в честь их соответствующего родительского каталога.

Например:

Каталоги = A001 A002 A003 A004

Подкаталоги = A001/files A002/files A003/files A004/files

Идентичное имя файла в каждом подкаталоге = A001/files/aseg.mgz A002/files/aseg.mgz и т.д. и т.д.

Уникальный новый каталог = collated_aseg

Я хочу переместить все aseg.mgz файлы в collated_aseg dir, и переименовать их так они идентифицируются как прибывающий из исходного родительского каталога: например, A001_aseg.mgz (или эквивалентный).

Я посмотрел на подобные проблемы (Переименуйте файл к названию родительского каталога в терминале) - однако, они имеют только один слой каталога, тогда как моя проблема имеет два. Я задавался вопросом, могло ли это быть легко сделано.

1
задан 21 April 2020 в 17:57

1 ответ

Так как промежуточное имя каталога является по-видимому постоянным, это должно быть просто с циклом оболочки:

for d in A???; do echo cp "$d/files/aseg.mgz" "collated_aseg/$d.mgz"; done

Удалите echo после того как Вы рады, что это делает правильную вещь. collated_aseg каталог должен уже существовать. Замена cp с mv если Вы действительно хотите переименовать (перемещают), а не копируют.

0
ответ дан 25 April 2020 в 10:43

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

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