テキストファイルに従ってファイルのリストの名前を変更する


8

フォルダ内のファイルのリストを持っています。テキストファイルに従って名前を変更します。例えば:

これらはフォルダ内の5つのファイルです。

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

新しいファイル名のリストを同じ順序で、拡張子なしで含むテキストファイルを使用して、名前を変更してもらいます.nii

n01
n02
n03
n04
n05

どうすればそうできますか?


3
ls | paste - /the/text/file | xargs -n2 mv
ステファンChazelas

回答:


9

1つのライナー、このコマンドは 'list' txtを読み取り、ファイルの各行を解析します。

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

3

あなたはできる:

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

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


0

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

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

またはPOSIXlyでそれを行うことができます:

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.