Mengganti nama gambar dalam urutan tertentu


8

Ini masalah saya: Saya memiliki folder dengan 500 gambar bernama:

1.jpg
2.jpg
3.jpg

dan seterusnya..

Saya menyalin folder itu dan sekarang saya perlu mengganti nama gambar-gambar yang sama dari 501 menjadi 1000 tetapi dengan urutan seperti ini:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Ketika saya menggunakan perintah pengubahan nama standar saya:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Memesan gambar dari 501 hingga 1000 tetapi semuanya tersebar:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(Mereka berada di urutan yang benar, tetapi mencampurnya)

Saya tahu itu mungkin salah satu perintah yang saya lewatkan ...


Gunakan 2 variabel i dan j mv $ i.jpg $ j.jpg dan tambahkan variabel Anda.
— Panther

terima kasih, harap Anda akan mengetahuinya. Saya mencari tetapi tidak menemukan jawabannya ..
— Painkiller

Hanya ingin tahu, nama aslinya, dalam kisaran apa mereka? Haruskah nomor aslinya diganti + 500?
— Jacob Vlijm

Ya Yakub Anda +500. Saya mencoba untuk menulis apa yang dikatakan bodhi kepada saya tetapi saya tidak begitu baik di lnux, saya bunuh diri untuk menulis perintah ganti nama di atas: D
— Painkiller

Laptop saya yang buruk sangat sibuk, tetapi jika tidak ada jawaban yang memuaskan muncul (yang saya ragu :)) dan jika Anda tidak mau, saya akan memposting skrip python kecil malam ini.
— Jacob Vlijm

Jawaban:


7

Coba Thunar , yang merupakan manajer file default untuk Xfce. Ini sangat ringan dan dilengkapi dengan alat penggantian nama massal berguna. Anda dapat menginstal Thunar dengan menjalankan perintah berikut di Terminal:

sudo apt-get install thunar

Anda mungkin dapat menginstal dari Perangkat Lunak Ubuntu juga.

Cara menggunakan utilitas

  1. Setelah menginstal Thunar, luncurkan utilitas Ubah Nama Massal .
  2. Klik ikon + dan tambahkan file yang ingin Anda ganti namanya dengan urutan yang benar.
  3. Klik pada kotak drop-down tepat di bawah daftar file yang dipilih dan pilih Penomoran . Klik pada kotak di sebelahnya dan pilih Name Only .
  4. Di kotak " Mulai Dengan: " masukkan 501, biarkan kotak " Teks: " kosong. Anda harus melihat pratinjau perubahan di kolom Nama Baru .
  5. Untuk menerapkan perubahan, klik tombol Ubah Nama File .

Selain Penomoran , utilitas ini mendukung tindakan berikut:

  • Masukkan Tanggal / Waktu
  • Sisipkan / Timpa
  • Hapus Karakter
  • Cari & Ganti
  • Huruf Besar / Huruf Kecil

Terima kasih kawan kau MVP! Saya hanya perlu menambahkan bahwa saya juga perlu mengubah format Teks ke: Teks - Nomor. (Kalau-kalau ada orang lain menggunakan ini)
— Painkiller

2
Untuk Mengganti fm ke ... melakukan tugas sederhana sepertinya terlalu berat bagiku. Menulis ekstensi skrip nautilus sederhana membutuhkan waktu lebih sedikit daripada beralih fm.
— Jacob Vlijm

1
@ JacobVlijm Saya menggunakan Thunar hanya untuk alat ganti nama massal bersama dengan Nautilus. Thunar cukup ringan dan sepertinya tidak menyebabkan konflik dengan Nautilus atau manajer file lainnya.
— pomsky

4
Jika Anda tidak ingin manajer file kedua, pyrenamerberfungsi dengan baik dan apa yang saya gunakan untuk mengganti nama tempat tidur ketika saya ingin GUI untuk membandingkan sebelum / sesudah output.
— Tom Brossman

13

The findperintah menemukan file dalam rangka 'direktori' ( 23.jpg, 66.jpg, ...). Anda dapat menempatkan |sortsetelah menemukan.

Tetapi metode Anda terlalu kompleks.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...akan lebih mudah.
— David Foerster

11

Dengan renameperintah.

rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg

Atau murni bashdan menggunakan ekspansi parameter shell .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 

5

Jika saya mengerti apa yang Anda minta dengan benar, saya pikir Anda bisa melakukannya menggunakan alat ganti nama default:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Anda harus menghapus -vnsakelar (verbose - no action) setelah pengujian, untuk membuat perubahan itu efektif.


Bagaimana cara menginstal alat ini di Ubuntu? secara default renameditautkan prename(1)dari perlpaket yang tidak mendukung semua opsi baris perintah ini.
— David Foerster

@ DavidFoerster Anda mungkin benar. Saya tidak dapat menemukan tautan instalasi saat ini (saya belum menggunakannya sejak sekitar 2014). Dengan alat ganti nama default, saya pikir ekspresi regex seharusnya 's/^(\d+)/sprintf("%d",$1+500)/e'. Saya akan memperbarui jawaban saya sesuai. Terima kasih.
— sempaiscuba

1
Jawaban Anda sekarang merupakan duplikat dari AFSHIN .
— David Foerster

@ DavidFoerster Maaf, apa jawabannya? Satu-satunya jawaban lain yang bisa saya lihat adalah dengan pomsky & waltinator. Baik menggunakan rename (versi manapun).
— sempaiscuba

Tautan langsung ke jawaban yang saya maksud sudah termasuk dalam komentar saya sebelumnya.
— David Foerster

0

Cara lain untuk mencapai ini hanya dengan perintah shell

count = 1; untuk i in ls; lakukan mv $ i CN $ ((hitung ++)). $ {i ## *.}; selesai

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.