Смена рабочего каталога при циклическом перемещении по папкам

В настоящее время я пытаюсь запустить программное обеспечение MRI (TBSS) для файлов изображений (scan.nii.gz) в командной строке Linux.

Все сканы хранятся в разных папках для разных участников, а имена файлов идентичны, поэтому:

/home/scans/participant1/scan.nii.gz

/home/scans/participant2/scan.nii.gz

/home/scans/participant3/scan.nii.gz

Это программное обеспечение создает результаты анализа в текущем рабочем каталоге. Поскольку сканы имеют одно и то же имя, они все время перезаписываются.

Я хотел бы перебрать все папки участников, сделать его рабочим каталогом, а затем выполнить команду tbss, которая является просто tbss_1_preproc scan.nii.gz. Таким образом, файл будет сохранен в текущем рабочем каталоге, который является каталогом участника.

Есть ли разумный способ сделать это в Linux?

Спасибо!

1 ответ

Решение

Попробуйте это в BASH. Код ниже не проверен, но он должен дать вам подсказку

#! /bin/bash

find . -name scan.nii.gz | while read line
do
   cd $(dirname "${line}")
   tbss_1_preproc $(basename "${line}")
done

Поместите его в файл и сделайте его исполняемым. Скопируйте его в папку сканов и выполните его.

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