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 ...

Penawar rasa sakit
sumber
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
pomsky
sumber
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 
waltinator
sumber
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 
αғsнιη
sumber
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.

sempaiscuba
sumber
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

aneeshep
sumber