ฉันจะเขียนคำว่า "cat" ลงในไฟล์. txt ทุกไฟล์ในโฟลเดอร์ได้อย่างไร?
ฉันจะเขียนคำว่า "cat" ลงในไฟล์. txt ทุกไฟล์ในโฟลเดอร์ได้อย่างไร?
คำตอบ:
ง่าย ๆ สำหรับจะทำงาน:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
นี่จะได้รับรายชื่อของไฟล์ txt ทั้งหมดในไดเรกทอรีปัจจุบันวนecho
ซ้ำไปเรื่อย ๆและเรียงเข้าไปใน (ผนวกเข้ากับเนื้อหา) คุณสามารถเปลี่ยน>>
เป็น>
, เพื่อเขียนทับเนื้อหาไฟล์ด้วย cat
อีกสิ่งหนึ่งที่คุณสามารถทำได้คือใช้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 เป็นสตริงเพื่อเขียนแทนการเข้ารหัส "cat" ที่นั่น
echo "cat" >> *.txt
คืออะไร