ฉันจะเขียนคำว่า "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คืออะไร