Schreiben Sie ein Wort in jede txt-Datei in einem Ordner


10

Wie kann ich das Wort "cat" in jede TXT-Datei in einem Ordner schreiben?

Antworten:


20

Ein einfaches für wird die Arbeit erledigen:

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

Dadurch wird eine Liste aller txt-Dateien im aktuellen Verzeichnis abgerufen, durch diese geschleift und echoin diese eingefügt (an den Inhalt anhängen). Sie ändern können , >>um >die Dateien Inhalt mit Katze zu überschreiben.

Sie können auch teeeinen Stream in mehrere Dateien umleiten.

Anhängen:

echo "cat" | tee -a *.txt

Zu überschreiben:

echo "cat" | tee *.txt

Was ist der Nachteil zu verwenden echo "cat" >> *.txt?
Hytromo

4
@akermania, die mit scheitern sollteambiguous redirect
Zanna

13

Wenn die Dateien nicht leer sind, können Sie sie sedohne Schleife verwenden. Zu catBeginn hinzufügen :

sed 'i\cat' *.txt

Zum Hinzufügen am Ende:

sed 'a\cat' *.txt

So fügen Sie nach der zweiten Zeile hinzu:

sed '2 a\cat' *.txt

So fügen Sie vor Zeilen mit fooihnen hinzu:

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

Bei leeren Dateien funktioniert dies jedoch nicht. Eine Art Fehler.

(Zum Schreiben tatsächlich auf die Dateien nach dem Testen Sie benötigen -iOption: sed -i 'a\cat' *.txt)


Ich hasse sed :)), weil es eine Menge Dinge gibt, die man damit machen kann und die ich nicht kenne :))
Ravexina

@ Ravexina sedist meine Marmelade;)
Zanna

Warum wird 'i\cat'der Backslash anstelle des Slashs verwendet?
Phuclv

@ LưuVĩnhPhúc der Backslash ist eigentlich optional, man kann auch 'icat'oder setzen i cat. Der Backslash ist konventionell, glaube ich. Sie können Forwardslash nicht verwenden - es wird buchstäblich eingefügt
Zanna

4

Python-Ansatz:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • Es verwendet ein sysModul, um über Befehlszeilenargumente zu iterieren
  • Jedes Befehlszeilenargument wird als Datei zum Schreiben geöffnet
  • "cat" mit newline wird in die Datei geschrieben, bevor zum nächsten übergegangen wird

Die Verwendung wäre as ./add_cat.py *.txt, was für alle .txtDateien im aktuellen Arbeitsverzeichnis gelten würde. Eine Verbesserung könnte darin bestehen, das Befehlszeilenargument Nr. 1 als Zeichenfolge zum Schreiben zu verwenden, anstatt "cat" dort fest zu codieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.