Bagaimana saya bisa batch mengubah nama satu set nama file di Linux?

9

Saya memiliki folder dengan gambar bernama:

pic001-2.png
pic002-2.png
pic003-2.png 

Bagaimana cara mengubah nama mereka menjadi yang berikut?

pic001.png
pic002.png
pic003.png 

Saya sudah mencoba mv "pic*-2.png" "pic*.png"tetapi terus mendapatkan kesalahan.

pengguna114558
sumber

Jawaban:

11

Ini akan menghapus yang pertama -2ditemukan di setiap nama file:

for f in pic*-2.png; do
  mv "$f" "${f/-2/}"
done

Untuk mengujinya, cukup tambahkan echoke mvbaris.

Aluísio ASG
sumber
9

Anda membutuhkan perintah 'rename' dengan nama yang sesuai!

Coba sesuatu seperti ini:

rename 's/(pic\d+)-\d\.jpg/$1.jpg/' pic*.jpg

Dibutuhkan ekspresi reguler perl sebagai argumen pertama, sehingga opsi pencocokan pola dan manipulasi Anda cukup luas. Lihat halaman manual rename (1) untuk detail lengkap.

Flimzy
sumber