Bash

如何使用目錄名稱重命名文件?

  • January 13, 2016

我現在的文件結構是:

  • 輸入

    • 1

      • pre.nii
    • 2

      • pre.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

但我不知道如何使用%字元串運算符並添加正確的後綴。

用 替換一個/(用 轉義\_

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

如果一切正常,請刪除echo.

在進行更改之前,我傾向於使用 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

引用自:https://unix.stackexchange.com/questions/254939