Güzel bir çözüm, bir dizi yedeklemeyi (örneğin, backup-
öneki) yapmak, bir dizi yeni dosya üreten orijinal dosyaları döndürmek (öneklenen ör. rotated-
), size bir
kümesi kazandırmaktır.
-
img-1.png
-
backup-img-1.png
-
rotated-img-1.png
-
img-2.png
- ... vb.
mv
/ cp
araçları [bash globbing] yalnızca önekler ekleyebilir, onları uzaklaştırmak karışıklık yaratır (parametre genişletmeyi kullanır, ewww ...)
rename
aracı, s/before/after/
substitution sözdizimini ( sed
aracından), bu koruma ön ekini değiştirmek ve orijinal dosyaların üzerine yazmak için kullanmanıza olanak tanır, böylece belirli bir resim grubu için toplam işleminiz img-
< strong> {1..n} .png
şöyle olurdu:
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:
-
cp
yerine mv
kullanabilirsiniz, ancak orjinalinin 2 kopyası var (aşağı doğru öneklerin birleşimini elde edersiniz, " rotated-backup-
...")
- dönüş saat yönünde (
-rotate 270
, saat yönünün tersine 90 ° alır)
- ilerlemeyi izlemek için
echo "Rotating ${imgf#backup-} ... ";
çağrısından sonra convert
ekleyin ( done
önce)
-
daha kompakt bir form için (örneğin bir dizi numaralandırılmış dosya), bunun yerine echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
gibi bir parametre genişlemesi kullanın
(Aynı bash param genişlemesinde önek ve sonek kaldıramazsınız, dolayısıyla cut
kullanın)
Ardından doğrulama işleminden sonra, onları orijinaline geri taşıyarak resimleri silin
rename 's/^rotated-//;' rotated-*
rm backup-img-*