İyi bir çözüm, bir takım yedekler (örneğin ön ek backup-
) yapmak, orijinal bir dosyayı bir dizi yeni dosya üreten (ön ek örneğin rotated-
) döndürerek bir dizi veri seti oluşturmaktır.
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...ve bunun gibi
mv
/ cp
Araçları yalnızca önekleri ekleyebilir, 's dağınık onları götürmek için [bash globbing] (Bu parametre genişleme kullanmayı tercih, ewww ...)
rename
Aracı kullanmanıza olanak sağlar s/before/after/
(den ikame sözdizimi sed
koruma öneki o takas için bir araç) ve resimlerden oluşan bir set verilen genel işlem, orijinal dosyaların üzerine img-
{1..n}.png
olacaktır:
for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done
Not:
- Eğer kullanabilirsiniz
cp
ziyade mv
, ama sonra ortalıkta orijinal 2 kopya var (olumsuz önekleri concatenation olsun, " rotated-backup-
...")
- dönme saat yönündedir (saat yönünün tersine
-rotate 270
90 ° döndürür)
- ilerlemeyi izlemek için aramalardan
echo "Rotating ${imgf#backup-} ... ";
sonra ekleyin convert
(önce done
)
daha kompakt bir form için (örneğin bir numaralı dosya kümesi), echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
bunun yerine bazı parametre genişlemelerini kullanın.
(Aynı bash param genişletme dolayısıyla kullanımında önek ve sonekleri kaldıramazsınız cut
)
Ardından karışmadığınızı doğruladıktan sonra, fotoğrafları orijinal haline getirerek silin.
rename 's/^rotated-//;' rotated-*
rm backup-img-*