Как написать команду повтора в Терминале

На моем пути всего 120 дел, в каждом случае по два файла путь выглядит следующим образом:

00001_FA.nii.gz 
00001_FA_grot.nii.gz
00002_FA.nii.gz  
00002_FA_grot.nii.gz
.. ..
00120_FA.nii.gz  
00120_FA_grot.nii.gz

Я хочу выполнить fslstats 00001_FA_nii.gz -k 00001_FA_grot.nii.gz -m , затем повторить процесс до случая 00120.

Как написать команду? Спасибо

0
задан 26 May 2020 в 20:28

1 ответ

Вам необходимо использовать функцию цикла (например, для очень полезно). Также вам необходимо преобразовать 1, 2, 3 .. 119, 120 в 5-значный формат. Вы можете сделать это благодаря printf .

И есть ваш скрипт:

for i in {1..120} ; do
  j=$(printf %05d $i)
  fslstats ${j}_FA_nii.gz -k ${j}_FA_grot.nii.gz -m
done

Как заметил @steeldriver в комментариях, bash теперь может понимать ведущие 0 в фигурных скобках, поэтому Вы можете заменить

for i in {1..120} ; do
  j=$(printf %05d $i)

на для j в {00001..00120}; do

3
ответ дан 19 June 2020 в 21:35

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

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