एक फ़ोल्डर में हर txt फ़ाइल में एक शब्द लिखना


10

मैं एक फ़ोल्डर में हर .txt फ़ाइल में "बिल्ली" शब्द कैसे लिख सकता हूं?

जवाबों:


20

एक सरल काम करेंगे:

for i in ./*.txt; do echo 'cat' >> "$i"; done;

यह वर्तमान निर्देशिका में सभी txt फ़ाइलों की सूची प्राप्त करेगा, उन पर लूप करेगा और उनमें echoबिल्ली करेगा (सामग्री के लिए संलग्न करें)। आप बिल्ली के साथ फ़ाइलों की सामग्री को अधिलेखित करने के >>लिए बदल सकते हैं >

एक और चीज जो आप कर सकते हैं वह है teeएक स्ट्रीम को कई फाइलों में रीडायरेक्ट करना।

जोड़ने के लिए:

echo "cat" | tee -a *.txt

अधिलेखित करने के लिए:

echo "cat" | tee *.txt

कोन का उपयोग करना है echo "cat" >> *.txt?
hytromo

4
@hakermania कि के साथ विफल करना चाहिएambiguous redirect
Zanna

13

यदि फ़ाइलें खाली नहीं हैं, तो आप sedबिना लूपिंग के उपयोग कर सकते हैं । catशुरुआत में जोड़ने के लिए:

sed 'i\cat' *.txt

अंत में जोड़ने के लिए:

sed 'a\cat' *.txt

दूसरी पंक्ति के बाद जोड़ने के लिए:

sed '2 a\cat' *.txt

fooउनके साथ लाइनों को जोड़ने से पहले :

sed '/foo/ i\cat' *.txt

हालांकि यह खाली फाइलों पर काम नहीं करता है। एक बग की तरह।

(करने के लिए वास्तव में परीक्षण के बाद आप की जरूरत फ़ाइलों को लिखने -iविकल्प: sed -i 'a\cat' *.txt)


मुझे sed :) से नफ़रत है), क्योंकि आप इसके साथ बहुत सी चीजें कर सकते हैं और मुझे इनकी जानकारी नहीं है :))
Ravexina

@Ravexina sed); मेरे जाम है
Zanna

'i\cat'स्लैश के बजाय बैकस्लैश का उपयोग क्यों करता है ?
फुल्विक

@ LưuV LnhPhúc बैकस्लैश वास्तव में वैकल्पिक है, आप भी डाल सकते हैं 'icat'या i cat। बैकलैश पारंपरिक मेरा मानना ​​है। आप फॉरवर्डलैश का उपयोग नहीं कर सकते हैं - यह शाब्दिक रूप से डाला जाएगा
Zanna

4

अजगर दृष्टिकोण:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • यह sysकमांड-लाइन तर्कों पर पुनरावृति करने के लिए मॉड्यूल का उपयोग करता है
  • प्रत्येक कमांड-लाइन तर्क लिखने के लिए फ़ाइल के रूप में खुला रहेगा
  • अगली पंक्ति में जाने से पहले फाइल को "कैट" लिखा जाएगा

उपयोग इस प्रकार होगा ./add_cat.py *.txt, जो .txtवर्तमान कार्यशील निर्देशिका में सभी फाइलों पर काम करेगा । इसमें सुधार करने के लिए कमांड-लाइन तर्क # 1 का उपयोग करके स्ट्रिंग को हार्डकोडिंग "कैट" के बजाय लिखने के लिए शामिल किया जा सकता है।

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