На моем пути всего 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.
Как написать команду? Спасибо
Вам необходимо использовать функцию цикла (например, для
очень полезно). Также вам необходимо преобразовать 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