बैकअप का एक सेट बनाने के लिए एक अच्छा समाधान है (उदाहरण के लिए उपसर्ग backup-
), नई फ़ाइलों का एक सेट बनाने वाली मूल फ़ाइलों को घुमाएं (जैसे उपसर्ग rotated-
), जिससे आपको एक सेट मिलेगा ।
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...और इसी तरह
mv
/ cp
उपकरण [बैश ग्लोबिंग] केवल उपसर्ग जोड़ सकते हैं, यह गंदा उन्हें ले जाने के लिए (यह पैरामीटर विस्तार का उपयोग करेंगे, ewww ...)
यह rename
टूल आपको s/before/after/
प्रतिस्थापन सिंटैक्स ( sed
टूल से) का उपयोग करने की अनुमति देता है जो कि उपसर्ग को सुरक्षित रखने और मूल फ़ाइलों को अधिलेखित करने के लिए है, इसलिए चित्रों के दिए गए सेट के लिए आपकी समग्र प्रक्रिया img-
{1..n}.png
होगी:
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
ध्यान दें:
- आप इसके
cp
बजाय का उपयोग कर सकते हैं mv
, लेकिन फिर मूल की 2 प्रतियां हैं जो चारों ओर झूठ बोल रही हैं (नीचे की ओर आपको उपसर्गों का संघनन प्राप्त होता है, " rotated-backup-
...")
- रोटेशन दक्षिणावर्त है (
-rotate 270
आपको 90 ° एंटी-क्लॉकवाइज मिलता है)
- प्रगति को ट्रैक करने के लिए, कॉल के
echo "Rotating ${imgf#backup-} ... ";
बाद convert
(पहले done
) जोड़ें
अधिक कॉम्पैक्ट रूप के लिए (जैसे क्रमांकित फ़ाइलों का एक सेट), echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
इसके बजाय कुछ पैरामीटर विस्तार का उपयोग करें
(आप एक ही बैश परम विस्तार में उपसर्ग और प्रत्यय को हटा नहीं सकते इसलिए उपयोग करें cut
)
फिर सत्यापन के बाद आपने गड़बड़ नहीं की है, चित्रों को मूल में वापस लाकर हटाएं
rename 's/^rotated-//;' rotated-*
rm backup-img-*