เขียนคำลงในไฟล์ txt ทุกไฟล์ในโฟลเดอร์


คำตอบ:


20

ง่าย ๆ สำหรับจะทำงาน:

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

นี่จะได้รับรายชื่อของไฟล์ txt ทั้งหมดในไดเรกทอรีปัจจุบันวนechoซ้ำไปเรื่อย ๆและเรียงเข้าไปใน (ผนวกเข้ากับเนื้อหา) คุณสามารถเปลี่ยน>>เป็น>, เพื่อเขียนทับเนื้อหาไฟล์ด้วย cat

อีกสิ่งหนึ่งที่คุณสามารถทำได้คือใช้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'ใช้แบ็กสแลชแทนทับ?
phuclv

@ LưuVĩnhPhú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โมดูลเพื่อทำซ้ำมากกว่าอาร์กิวเมนต์บรรทัดคำสั่ง
  • แต่ละอาร์กิวเมนต์บรรทัดคำสั่งจะเปิดเป็นไฟล์สำหรับการเขียน
  • "cat" กับ newline จะถูกเขียนลงไฟล์ก่อนที่จะไปต่อ

การใช้งานจะเป็น./add_cat.py *.txtซึ่งจะทำงานกับ.txtไฟล์ทั้งหมดในไดเรกทอรีการทำงานปัจจุบัน การปรับปรุงสิ่งนี้อาจรวมถึงการใช้อาร์กิวเมนต์บรรทัดคำสั่ง # 1 เป็นสตริงเพื่อเขียนแทนการเข้ารหัส "cat" ที่นั่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.