ganti nama daftar file sesuai dengan file teks

8

Saya memiliki daftar file di folder, yang ingin saya beri nama sesuai dengan textfile. Sebagai contoh:

Ini adalah 5 file dalam folder.

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

Saya ingin mereka mengganti nama menggunakan file teks yang berisi daftar nama file baru dalam urutan yang sama, tanpa ekstensi .nii:

n01
n02
n03
n04
n05

Bagaimana saya bisa melakukannya?

Elia Mak
sumber
3
ls | paste - /the/text/file | xargs -n2 mv
Stéphane Chazelas

Jawaban:

9

satu liner, perintah ini membaca txt 'daftar' dan mem-parsing untuk setiap baris file.

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

Anda bisa melakukannya:

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

... di mana file bernama "LAMA" berisi nama file lama dan file bernama "BARU" memiliki nama yang cocok baru (1: 1).

JRFerguson
sumber
0

Jika shell Anda mendukung substitusi proses, coba:

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

atau Anda dapat melakukannya dengan POSIXly:

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