जवाबों:
एक सरल काम करेंगे:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
यह वर्तमान निर्देशिका में सभी txt फ़ाइलों की सूची प्राप्त करेगा, उन पर लूप करेगा और उनमें echo
बिल्ली करेगा (सामग्री के लिए संलग्न करें)। आप बिल्ली के साथ फ़ाइलों की सामग्री को अधिलेखित करने के >>
लिए बदल सकते हैं >
।
एक और चीज जो आप कर सकते हैं वह है tee
एक स्ट्रीम को कई फाइलों में रीडायरेक्ट करना।
जोड़ने के लिए:
echo "cat" | tee -a *.txt
अधिलेखित करने के लिए:
echo "cat" | tee *.txt
ambiguous redirect
यदि फ़ाइलें खाली नहीं हैं, तो आप 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
); मेरे जाम है
'i\cat'
स्लैश के बजाय बैकस्लैश का उपयोग क्यों करता है ?
'icat'
या i cat
। बैकलैश पारंपरिक मेरा मानना है। आप फॉरवर्डलैश का उपयोग नहीं कर सकते हैं - यह शाब्दिक रूप से डाला जाएगा
अजगर दृष्टिकोण:
#!/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 का उपयोग करके स्ट्रिंग को हार्डकोडिंग "कैट" के बजाय लिखने के लिए शामिल किया जा सकता है।
echo "cat" >> *.txt
?