如何使用目录名称重命名文件?

如何使用目录名称重命名文件?

我现在的文件结构是:

  • 输入
    • 1
      • 前NII
    • 2
      • 前NII

我希望它是:

  • 输入
    • 1_pre.nii
    • 2_pre.nii

从输入文件夹中,我尝试了:for i in */pre.nii; do echo $i_pre.nii; done

但这给了我:

    .nii
    .nii

我也尝试过:for i in */pre.nii; do echo ${i%/*}; done 这给了我:

    1
    2

但我不知道如何使用%字符串运算符并添加正确的后缀。

答案1

/要将一个(用 转义\)替换为_

for i in */pre.nii; do echo mv "$i" "${i/\//_}"; done

如果一切看起来都很好,请删除echo.

答案2

我倾向于使用 sed 进行替换并在进行更改之前进行测试:

for i in */pre.nii;
do 
   j=$(echo $i | sed 's/\//_/')
   echo $j
done

然后运行它

for i in */pre.nii;
do 
   j=$(echo $i | sed 's/\//_/')
   mv -v $i $j
done

相关内容