गुणन पाठ फ़ाइलों की सामग्री को मिटाने और बदलने का सबसे सरल तरीका


0

मैं काफी आसान काम करने की कोशिश कर रहा हूं। मेरे पास 40 पाठ फाइलें हैं जिनमें सब कुछ हटाने और टेम्पलेट टेक्स्ट-फाइल की सामग्री के साथ बदलने की आवश्यकता है।

सबसे आसान / सबसे तेज़ तरीका क्या है?

NB: मैं खोज और प्रतिस्थापित नहीं करना चाहता, लेकिन सब कुछ हटाना और फिर अंदर कॉपी करना। यह फ़ाइल खोलने जैसा होगा, ctrl + A >> del >> ctrl + v प्रत्येक फ़ाइल के लिए

जवाबों:


3

यूनिक्स की तरह

यूनिक्स जैसी कमांड-लाइन (लिनक्स, ओएसएक्स आदि पर) आप catकिसी फाइल की सामग्री को एसटीडीयूएसटी में प्रिंट करने के लिए और >एसटीडीयूएसटाउट को किसी फाइल पर रीडायरेक्ट करने के लिए उपयोग कर सकते हैं।

cat template.txt > file.txt

सबसे आसान तरीका template.txtएक अलग निर्देशिका में रखा जाता है, फिर आप कार्य निर्देशिका में प्रत्येक * .txt को प्रभावित करने के लिए लूप के लिए उपयोग कर सकते हैं।

for f in ./*.txt; do cat /path/to/template.txt > "$f"; done

बैश 4+ वाले सिस्टम पर (किसी भी आधुनिक * निक्स के पास यह होने की संभावना है; साथ में जांच करें bash --version), आप विस्तारित ग्लोबिंग का उपयोग कर सकते हैं, इसलिए आप template.txtउसी निर्देशिका में हो सकते हैं जिस फाइल को आप लिखना चाहते हैं:

shopt -s extglob
for f in ./!(*template).txt; do cat template.txt > "$f"; done

यदि आपके पास कई उपनिर्देशिकाओं में पाठ फ़ाइलें हैं (चेतावनी: इस काम में सभी लेख लिखें *.txtऔर सभी आइटम्स सब्-डाइरेक्ट्रीज़, और सभी उनकी सब्-डाइरेक्टरीज ...) में उपयोग कर सकते हैं, तो आप ग्लोबस्टार का उपयोग कर सकते हैं:

shopt -s globstar
for f in ./**/*.txt; do cat /path/to/template.txt > "$f"; done

##  OR:
shopt -s globstar extglob
for f in ./**/!(*template).txt; do cat template.txt > "$f"; done

खिड़कियाँ

यह समान रूप से काम करता है, हालांकि वाक्य रचना अलग है। इसके बजाय cat, उपयोग करें type:

type template.txt > file.txt

प्रत्येक .txtनिर्देशिका में काम करने के लिए :

FOR %F IN (*.txt) DO type C:\path\to\template.txt > %F

पुनरावर्तन के लिए, उपयोग करें /R:

FOR /R %F IN (*.txt) DO type C:\path\to\template.txt > %F

वहाँ का उपयोग करने के किसी भी कारण है catया typeबजाय cpया copy?
टेराडॉन

@terdon केवल कि किसी कारण से यह समाधान है जो पहले मेरे सिर में आया था।
evilsoup

यह काम करता है (मैं एक विंडोज़ प्लेटफ़ॉर्म पर हूं, काम पर कोई लिनक्स नहीं) लेकिन यह टेम्पलेट की सामग्री को मिटा देता है, क्या इसे रोकने का कोई तरीका है?
चिप्सगौमरडे

0

ठीक है, आप जो चाहते हैं वह एक स्वचालित खोज द्वारा किया जा सकता है और प्रतिस्थापित कर सकता है (जैसे कि पॉवरग्रेप क्या करता है लेकिन मुफ्त में), लेकिन यह सिर्फ टेम्पलेट लेना और प्रत्येक नई फ़ाइल के रूप में कॉपी करना आसान है। यह कमांड लाइन से किया जा सकता है।

सभी फ़ाइलनामों की सूची के साथ एक फ़ाइल बनाएँ जिसे आप उस टेम्पलेट में रखना चाहते हैं।

तो listoffiles.txt में सामग्री है:

file1.txt
file2.txt
file3.txt

फिर एक cmd प्रॉम्प्ट खोलें और करें:

C: \ fdf> for / f% f in (listoffiles.txt) do @echo copy template.txt% f करें

copy.txt file1.txt
कॉपी टेम्पलेट। txt file2.txt
कॉपी टेम्पलेट। txt file3.txt कॉपी करें

C: \ fdf>

कॉपी टेम्पलेट पढ़ने के लिए बस @echo copy template.txt लाइन बदलें। यानी @ ईको या सिर्फ गूंज को हटा दें।

आपको इसमें c: \ fdf और template.txt की listoffiles.txt की जरूरत है। और यह file1.txt file2.txt आदि बनाएगा।

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