Antworten:
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 echo
in diese eingefügt (an den Inhalt anhängen). Sie ändern können , >>
um >
die Dateien Inhalt mit Katze zu überschreiben.
Sie können auch tee
einen Stream in mehrere Dateien umleiten.
Anhängen:
echo "cat" | tee -a *.txt
Zu überschreiben:
echo "cat" | tee *.txt
ambiguous redirect
Wenn die Dateien nicht leer sind, können Sie sie sed
ohne Schleife verwenden. Zu cat
Beginn 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 foo
ihnen 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 -i
Option: sed -i 'a\cat' *.txt
)
sed
ist meine Marmelade;)
'i\cat'
der Backslash anstelle des Slashs verwendet?
'icat'
oder setzen i cat
. Der Backslash ist konventionell, glaube ich. Sie können Forwardslash nicht verwenden - es wird buchstäblich eingefügt
Python-Ansatz:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sys
Modul, um über Befehlszeilenargumente zu iterierenDie Verwendung wäre as ./add_cat.py *.txt
, was für alle .txt
Dateien 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.
echo "cat" >> *.txt
?