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 ...
command-line
rename
batch-rename
Penawar rasa sakit
sumber
sumber
Jawaban:
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:
Anda mungkin dapat menginstal dari Perangkat Lunak Ubuntu juga.
Cara menggunakan utilitas
Selain Penomoran , utilitas ini mendukung tindakan berikut:
sumber
pyrenamer
berfungsi dengan baik dan apa yang saya gunakan untuk mengganti nama tempat tidur ketika saya ingin GUI untuk membandingkan sebelum / sesudah output.The
find
perintah menemukan file dalam rangka 'direktori' (23.jpg
,66.jpg
, ...). Anda dapat menempatkan|sort
setelah menemukan.Tetapi metode Anda terlalu kompleks.
sumber
for i in {1..500}; do ...
akan lebih mudah.Dengan
rename
perintah.Atau murni
bash
dan menggunakan ekspansi parameter shell .sumber
Jika saya mengerti apa yang Anda minta dengan benar, saya pikir Anda bisa melakukannya menggunakan alat ganti nama default:
Anda harus menghapus
-vn
sakelar (verbose - no action) setelah pengujian, untuk membuat perubahan itu efektif.sumber
rename
ditautkanprename(1)
dariperl
paket yang tidak mendukung semua opsi baris perintah ini.'s/^(\d+)/sprintf("%d",$1+500)/e'
. Saya akan memperbarui jawaban saya sesuai. Terima kasih.Cara lain untuk mencapai ini hanya dengan perintah shell
count = 1; untuk i in
ls
; lakukan mv $ i CN $ ((hitung ++)). $ {i ## *.}; selesaisumber