ディレクトリ名を使用してファイル名を変更するには?

ディレクトリ名を使用してファイル名を変更するには?

私の現在のファイル構造は次のとおりです。

  • 入力する
    • 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

/\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

関連情報