Resimlerinizin bulunduğu dizine girip aşağıda ki komutu çağırır mısınız lütfen?
ls --sort=version -1
veya
ls --sort=version -1 /home/site/resimler/
Son olarak yanlış bilgilendirmemek babında bu işlem kalıcı olarak sort by özelliği taşımaz. bu komutu çağırmanıza müteakip ekrana sıralı olarak klasör içerisinde ki içeriği basacaktır.
Hmm yaramaz bana bu o zaman. Bu dediğin gibi ekrana yazdırıyor sadece. Ben bunda çözüme ulaşamayınca perl rename komutu ile bütün .jpg vs uzantılı dosyaların başına 2 tane sıfır attırma yoluna bakıyorum.
$ touch {1..19}.jpg
$ ls
10.jpg 12.jpg 14.jpg 16.jpg 18.jpg 1.jpg 3.jpg 5.jpg 7.jpg 9.jpg
11.jpg 13.jpg 15.jpg 17.jpg 19.jpg 2.jpg 4.jpg 6.jpg 8.jpg
$ rename 's/\d+/sprintf("%05d", $&)/e' *.jpg
$ ls
00001.jpg 00005.jpg 00009.jpg 00013.jpg 00017.jpg
00002.jpg 00006.jpg 00010.jpg 00014.jpg 00018.jpg
00003.jpg 00007.jpg 00011.jpg 00015.jpg 00019.jpg
00004.jpg 00008.jpg 00012.jpg 00016.jpgBütün alt klasörleri ve alt klasörlerin içindeki resimleri "ls */" ile taratıyorum fakat rename çalışmıyor. Alt klasörleride listelediği için olmuyor sanırım. Çünkü içinde sadece resim olan bir klasöre girdiğimde rename çalışıyor. Sadece resimleri listelemesi lazım sanırım. Onunda içinde "ls */ *.jpg" yapıyorum ama işe yaramıyor. Birde eğer cevap yazarsan JPG, png, PNG yi komuta nasıl eklerim onuda yazarsan sevinirim.
Ayrıca sunucumun default locale i LC_ALL=POSIX idi. Bunu UTF-8 yaptım olmadı. Ardında C yaptım yine olmadı.
Edit:
find */ -exec rename 's/\d+/sprintf("%03d", $&)/e' *.jpg {} +Perl kodunun exec ile çalışması için sanırım tırnaklara bir düzenleme gerekiyor. Nasıl düzeltebilirim bunu?
Aşağıdaki kodla halletim.
find -type f -name '*.jpg' -execdir rename 's/\d+/sprintf("%05d", $&)/e' *.jpg {} \;