如何在终端中写入重复命令

如何在终端中写入重复命令

在我的路径中,总共有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

您需要使用循环函数(for例如,非常有用)。此外,您需要将 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)

for j in {00001..00120} ; do

相关内容