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