Для цикла работает, но петли дважды

Я запускаю следующий код

for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn ../*/dicom/); done; 

чтобы выполнить программу dcm2nii во всех подпапках ./*/ (все они называются «dicom») и сохранить вывод в те же подпапки. Цикл работает, но он запускается дважды, создавая повторяющиеся выходные файлы в каждой поддиректории «dicom». Интересно, что если я укажу абсолютные пути в обоих местах, но с подстановочным знаком * intact, чтобы включить все папки в родительский каталог, цикл выполняется только один раз по желанию. Как заставить цикл работать только один раз с использованием относительных путей?

Думаю, у вас было 2 подпапки во время тестирования / выполнения вашей команды.

Ваш код:

 for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn ../*/dicom/); done; 
  • сначала входит в подпапку $d
  • затем dcm2nii ... on ../*/dicom , что переводится как: вложенная папка «dicom» всех папок суперпапки
  • затем переходит во вторую подпапку и делает то же самое

Попробуй это:

 for d in ./*/ ; do (cd "$d" && dcm2nii -ny -ry -xy -gn dicom/); done; 

или (возможно):

 dcm2nii -ny -ry -xy -gn ../*/dicom/