कैसे बड़े पैमाने पर कन्वर्ट करने के लिए .xml एक निर्देशिका में उसी फ़ाइल नाम को बनाए रखते हुए UTF-8 के लिए फ़ाइलें


0

मेरे पास कई .xml फाइलें हैं जो ISO-8859-1 में एन्कोडेड हैं, और मैं उन सभी को UTF-8 में चाहता हूं।

मैंने उन्हें व्यक्तिगत रूप से परिवर्तित करने के लिए कोड का पता लगाया है:

iconv -f ISO-8859-1 -t UTF-8 filename.xml > newfilename.xml

और यह ठीक काम करता है।

जो मैं जानना चाहता हूं कि एक डायरेक्टरी में सभी .xml फ़ाइलों को स्वचालित रूप से साफ़ करने के लिए एक शेल स्क्रिप्ट कैसे लिखना है और फिर पुरानी फ़ाइलों को नई परिवर्तित फ़ाइलों के साथ बदलना है, लेकिन फिर भी उसी फ़ाइल-नाम को रखना है।

मैं शेल स्क्रिप्टिंग में नया हूं, इसलिए मदद की बहुत सराहना की जाएगी।


यह सुरक्षित नहीं है, क्योंकि यह एक्सएमएल घोषणा को अपरिवर्तित फ़ाइल की शुरुआत में कॉपी करेगा। नए एन्कोडिंग को प्रतिबिंबित करने के लिए XML घोषणा को बदलने की आवश्यकता है।
माइकल

यह SED का उपयोग करके किया जा सकता है ... sed -i 's/olddec/newdec/g'बस इसे आइकॉन लाइन से पहले लूप के लिए डालें
Fegnoid

जवाबों:


2

आप इसे कमांड लाइन पर बैश शेल में कर सकते हैं

for i in *.xml; do
    iconv -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

यह मूल रूप से सभी xml फ़ाइल लेता है, उन्हें Iconv के माध्यम से filname.xml.1 में डालता है और फिर उस फ़ाइल को मूल फ़ाइल नाम पर वापस ले जाता है

आइकोव और एरेस पर एक त्वरित नज़र थी कि मुझे क्या होना चाहिए (यदि आप जीएनयू संस्करण का उपयोग कर रहे हैं)

for i in *.xml; do
    iconv -sc -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

-s विकल्प साइलेंस चेतावनियाँ, और -c विकल्प आउटपुट से अमान्य वर्णों को छोड़ देता है।


हाय फेग्नॉइड, कोड ने काम किया, लेकिन ऐसा लगता है कि यह तब तक चला जब तक कि पहला चरित्र अनुक्रम गलत नहीं था, और बाकी लाइनों को हटाने के बाद, उदाहरण के लिए पहला चरित्र जो गलत था वह लाइन 5000 पर था, इसे सही किया, फिर सब कुछ हटा दिया 5000 के बाद लाइन। 35000 लाइनों के करीब लाइनों ... किसी भी विचार क्यों अपने कर रहा है?
ट्रैन

आइकॉन के साथ ऐसा करने के लिए और अधिक हो सकता है ... जो मुझे स्वीकार करना होगा मुझे इसके बारे में बहुत कुछ नहीं पता है
फेग्नॉइड

@Fegnoid: प्रयास करें recode , यह एक है -forceविकल्प। "इस विकल्प के साथ, अपरिवर्तनीय या अन्यथा गलत पुनरावर्ती को पूरा करने के लिए चलाया जाता है" । यह एक बार में कई फाइलों पर भी काम कर सकता है।
RedGrittyBrick

मैंने अपने उत्तर में -sc विकल्प को जोड़ा, इससे इसे पूर्ण होने के माध्यम से चलने देना चाहिए
Fegnoid
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.