Schreiben in mehrere Dateien mit cat

7

Ich habe einige leere HTML-Dateien, die ich schreiben möchte. Ich versuche das

cat account_settings/account_settings.html >> assets/assets.html, users/users.html

zu versuchen, in die Dateien zu schreiben assets.htmlund users.html.

Wie kann ich in mehrere Dateien schreiben?

Le Qs
quelle
3
In zsh cat foo > a > bfunktioniert.
16.

Antworten:

14

Sie können den teeBefehl verwenden

NAME
       tee - read from standard input and write to standard output and files

z.B

cat account_settings/account_settings.html | tee -a assets/assets.html users/users.html

oder (unter Verwendung der Eingangsumleitung)

tee -a assets/assets.html users/users.html < account_settings/account_settings.html

Wie auf der Handbuchseite angegeben, wird teeauch der Inhalt an das Terminal ausgegeben (Standardausgabe). Wenn Sie dies nicht sehen möchten, leiten Sie stdout auf null um

tee -a assets/assets.html users/users.html < account_settings/account_settings.html > /dev/null
Steeldriver
quelle
Kann tee -a auch beim Löschen von Inhalten verwendet werden truncate -s 0 tee -a assets/assets.html users/users.html
Le Qs
@LeQs Versuchen Sie, die Dateien zu löschen, bevor Sie darauf schreiben?
Chai T. Rex
@ ChaiT.Rex Es ist nur ein zufälliger Gedanke, der mir unabhängig von meiner ursprünglichen Frage in den Sinn kam.
Le Qs
Das Abschneiden und Anhängen von @LeQs scheint nicht kompatibel zu sein - was genau möchten Sie erreichen? Wenn Sie mehrere Dateien abschneiden möchten, können Sie dem Befehl zum Abschneiden einfach mehrere Dateinamenargumente geben, z truncate -s0 foo bar baz. Sie könnten so etwas tun, wie : | tee foo bar bazich denke.
Steeldriver
1
@LeQs macht truncate -s0 users/users.html credit/credit.htmlin diesem Fall nicht das, was Sie wollen?
Steeldriver
6

Durchlaufen Sie einfach die Liste der gewünschten Dateien

for file in assets/assets.html users/users.html
do
    cat account_settings/account_settings.html >> "$file"
done
Sergiy Kolodyazhnyy
quelle