2011-08-31 7 views
7

में किसी फ़ोल्डर में सभी फ़ाइलों में .xml एक्सटेंशन कैसे जोड़ें I फ़ोल्डर में सभी फ़ाइलों का नाम बदलना और .xml एक्सटेंशन जोड़ें। मैं यूनिक्स का उपयोग कर रहा हूँ। मैं उसे कैसे कर सकता हूँ?यूनिक्स/लिनक्स

+1

ये टैग भ्रम पैदा करते हैं। क्या आप इसे PHP, पायथन या यूनिक्स शैल में करना चाहते हैं? – rds

+0

नाम बदलें/$/\। Xml/'* संदर्भ: http://askubuntu.com/a/74368 – Neil

उत्तर

18

खोल पर, आप यह कर सकते हैं:

for file in $(find -type f); do 
    mv ${file} ${file}.xml 
done 

अन्य पर:

for file in *; do 
    if [ -f ${file} ]; then 
     mv ${file} ${file}.xml 
    fi 
done 

संपादित

रिकर्सिवली सभी सबडायरेक्टरियों पर ऐसा करने के लिए, आप find का उपयोग करना चाहिए हाथ, यदि आप इससे कुछ अधिक जटिल करने जा रहे हैं, तो आपको शायद shell स्क्रिप्ट का उपयोग नहीं करना चाहिए।

अभी भी बेहतर है

नीचे Jonathan Leffler द्वारा प्रदान की टिप्पणी का उपयोग करें:

find . -type f -exec mv {} {}.xml ';' 
+0

मैं इसे सभी उप निर्देशिकाओं पर भी कैसे कर सकता हूं – aWebDeveloper

+5

फ़ाइलों को ढूंढने के लिए 'ढूंढें' का उपयोग करें; 'ढूंढो। -type f -exec mv {} {} .xml ';' '। –

+1

उत्तर अद्यतन किया गया। –

2

में अजगर:

उपयोग os.listdir एक निर्देशिका में सभी फ़ाइलों के नाम खोजने के लिए। यदि आपको रिकर्सिवली उप-निर्देशिकाओं में सभी फ़ाइलों को भी ढूंढने की आवश्यकता है, तो इसके बजाय os.walk का उपयोग करें। इसकी एपीआई os.listdir से अधिक जटिल है लेकिन यह निर्देशिकाओं को पुनरावर्ती चलने के शक्तिशाली तरीके प्रदान करती है।

फिर फ़ाइलों का नाम बदलने के लिए os.rename का उपयोग करें।

+0

कुछ नमूना कोड या उदाहरण या लिंक। मुझे पाइथन – aWebDeveloper

+0

@ वेब डेवलपर नहीं पता: क्या आपने मुझे जवाब देने के लिए -1 -1 किया था? गंभीरता से? –

+0

नहीं, मैंने गलती से इसे क्लिक किया है, मैंने तुरंत इसे पूर्ववत कर दिया है – aWebDeveloper

3

अगर यह मानक है पता नहीं है, लेकिन मेरे Perl पैकेज (Debian/Ubuntu) एक /usr/bin/prename भी शामिल है (और एक सिम्लिंक बस rename) जिसका कोई अन्य उद्देश्य नहीं है:

rename 's/$/.xml/' * 
+0

मैं इसे सभी उप निर्देशिकाओं पर भी पुनरावर्ती रूप से कैसे करूं लेकिन .xml फ़ाइलों पर नहीं। यानी उन फ़ाइलों को जिन्हें पहले से नामित नहीं किया गया है – aWebDeveloper

+0

'*' के बजाय '$ (find -type f)' के साथ। और एक दावे/(? mario

+2

के साथ रेगेक्स को अपनाने का उपयोग करने के लिए आप वास्तव में फ़ाइलों का नाम बदलने के बिना नाम बदलने के लिए ध्वज के साथ नाम का उपयोग कर सकते हैं। –

3
find . -type f \! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'