Fügen Sie der Liste der Dateien Text hinzu

553
cannyboy

Ich versuche, xargs zu verwenden, um eine Reihe von Dateien zu bearbeiten.

Eine Datei namens filelist.txt enthält die Dateinamen

john  paul  george ringo steve  

Ich kann alle diese Dateien mit diesem Befehl erstellen:

cat filelist.txt | xargs touch 

Wie kann ich zu jeder Datei in der Liste den gleichen Text "Hallo" hinzufügen? Wie würde ich auch einen Text hinzufügen, der auf dem Dateinamen basiert. Zum Beispiel 'Vorname: Steve' zur Steve-Datei?

4

2 Antworten auf die Frage

4
Steven

helloAn jede Datei anhängen :

cat filelist.txt | while read line; do echo hello >> $line; done 

Dateiname an jede Datei anhängen:

cat filelist.txt | while read line; do echo $line >> $line; done 
0
cannyboy

Ich habe @ steven als richtig markiert, weil es vielleicht lesbarer ist, aber ich war neugierig auf eine Lösung, die verwendet wurde xargs. Das habe ich gefunden:

cat filelist.txt | xargs -I $0 sh -c "echo 'hello' > $0" cat filelist.txt | xargs -I $0 sh -c "echo 'hello $0' > $0" 

Die -I $0Mittelwerte ersetzen $0in der kommenden Zeichenfolge. Sie könnten etwas besser lesbar wie verwenden $NAMEoder person_nameusw. sh -cführt den Befehl in einen String. Nicht sicher, warum das so ist.