zoeken adlı üyeden alıntı: mesajı görüntüle
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.jpg
Bü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 {} \;