सभी फाइलों को .jpg एक्सटेंशन दें


8

मेरे पास एक निर्देशिका है और कुछ फाइलों के एक्सटेंशन लोअरकेस के बजाय अपरकेस (.JPG) में हैं।

मैं यह सुनिश्चित करना चाहता हूं कि हर फाइल में .jpg उसके विस्तार के रूप में हो। मैं इसे शेल प्रॉम्प्ट से कैसे करूंगा?


यह शर्म की बात है कि linux में AppleScript नहीं है।
गैजेट्मो

2
यह इतना बढ़िया है कि लिनक्स में कोई AppleScript नहीं है।
गणित

जवाबों:


15

शेल पैरामीटर विस्तार का उपयोग करना :

for f in *.JPG; do
    mv "${f}" "${f%%.JPG}.jpg"
done

"वर्ण, रिक्त स्थान युक्त फ़ाइल नामों की देखभाल तस्वीरों अक्सर करते हैं के रूप में होगा।


5
+1 यह समाधान तब भी काम करता है जब आपके पास फ़ाइल नाम में स्थान हो, लेकिन आप का अर्थ "f" के बजाय "$ f" है।
एडम ज़ल्कमैन

शेल पैरामीटर विस्तार थोड़ा गूढ़ है, एक इसके बजाय बेसन का उपयोग कर सकता है: एफ में *। जेपीजी के लिए; mv "$ f" "` बेसन $ f .JPG`.jpg "; किया
गणित

@ मथ: मैं अपने संस्करण को पसंद करता हूं क्योंकि यह व्हाट्सएप वाले फाइलनाम के साथ काम करता है और इसके साथ काम भी करेगा /path/to/*.JPG। आप अपना खुद का जवाब प्रस्तुत करने के लिए स्वागत कर रहे हैं, निश्चित रूप से :)
Johnsyweb

बेशक बेसन प्रमुख निर्देशिकाओं की पट्टी करेगा, लेकिन फाइलनाम के अंदर रिक्त स्थान के साथ काम करेगा। (मुझे नहीं लगता कि यह एक जवाब के लायक है;) इसलिए मैंने इसे एक टिप्पणी के रूप में पोस्ट किया)
गणित

10

यदि आप बाहरी उपकरणों (न केवल बैश) का उपयोग कर सकते हैं, तो renameकमांड की जांच करें !

rename .JPG .jpg *

renameका हिस्सा है util-linux


नाम है ... समस्याग्रस्त। नाम बदलने का एक संस्करण perlहै जो एक ही चीज़ को करने के लिए विभिन्न तर्कों को स्वीकार करता है।
cha0site

क्या आप थोड़ा और समझा सकते हैं? कौन सा संस्करण BTW?
मैथ

3

यदि आपके पास फ़ाइल नाम में स्थान हैं:

for f in *.JPG; do [[ -f "${f}" ]] && mv "${f}" "${f/%JPG/jpg}"; done

2

मैं mmvकमांड पर एक नजर डालने का सुझाव दूंगा। यह इस तरह के कार्यों के लिए बिल्कुल अनुकूल है। आपके परिदृश्य में यह होगा:

#> mmv "*.JPG" "#1.jpg"

आदमी पेज उदाहरण से भरा हुआ है, तो यह इसकी आदत हो करने के लिए कोई समय लगता है।

पर डेबियन सिस्टम इसके साथ स्थापित किया जा सकता:

#> aptitude install mmv

0

यदि आपके पास फ़ाइल नाम में स्थान नहीं है:

for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done

1
नाम के रिक्त स्थान वाली फाइलों के लिए यह काम करना काफी आसान होगा: दोनों तर्कों के आसपास दोहरे उद्धरण जोड़ें mv
एडम ज़ल्कमैन

मेरे पास जगह नहीं है। मैं इसे CURRENT निर्देशिका में शामिल करने के लिए क्या जोड़ता हूं। फिलहाल मुझे त्रुटि मिली है - mv: स्टेट नहीं कर सकता `* .JPG ': ऐसी कोई फ़ाइल या निर्देशिका नहीं
मार्क फ़्लिंट

1
आपके पास कोई JPG नहीं है।
कारोली होरवाथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.