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 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
ambiguous redirect
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)
sedist 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")
sysModul, um über Befehlszeilenargumente zu iterierenDie 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.
echo "cat" >> *.txt?