テキストファイルに基づいてファイルリストの名前を変更する

テキストファイルに基づいてファイルリストの名前を変更する

テキストファイルに基づいて名前を変更するフォルダのファイルのリストがあります。たとえば、

フォルダに5つのファイルがあります。

101_T1.nii
107_T1.nii 
109_T1.nii
118_T1.nii
120_T1.nii

同じ順序で新しいファイル名のリストを含めますが、拡張子は除外されたテキストファイルを使用して名前を変更したいと思います.nii

n01
n02
n03
n04
n05

どうですか?

答え1

1つのライナーであるこのコマンドは、「リスト」txtを読み取り、ファイル内の各行を解析します。

for file in *.nii; do read line;  mv -v "${file}" "${line}";  done < list

答え2

次のことができます。

paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done

...ここで、「OLD」というファイルには古いファイル名が含まれ、「NEW」というファイルには一致する新しい(1:1)名前があります。

答え3

シェルがプロセス置換をサポートしている場合は、以下を試してください。

paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv

またはPOSIXlyで行うことができます。

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv

関連情報