2017-06-08 4 views
-2

Bitte schlagen Sie mir einen Befehl vor, der eine Zeile aus allen Textdateien kopiert und eine Datei mit allen Zeilen darin erstellt.Befehl, um eine Zeile aus Text zu kopieren und eine neue Textdatei zu erstellen

Ich bin auf einer Linux-Maschine, wo ein bestimmtes Verzeichnis etwa 11000 Dateien enthält und jede Datei 3 oder 4 Zeilen von Daten hat.

Was ich tun wollte, ist, alle Daten in eine Datei zu kombinieren, die ich verweisen kann ... sagen wir 11000 * 3 = 3000 Zeilen. Ich möchte alle 3000 Zeilen Zeile für Zeile in einer einzigen Datei kopieren. Dies sind die wenigen txt-Dateien und Verzeichnisse

und auch die Verzeichnisse hat eine Liste der TXT-Dateien

Jan 2007 abc.txt 
Jan 2007 siele.txt 
Jan 2007 regel.txt 
Jan 2007 sne.txt 
Jan 2007 marshwlo.txt 
Jan 2007 ziplist.txt 
Jan 2007 listider.txt 
Jan 2007 kindle.txt 
Jan 2007 list.txt 
Jan 2007 Codelevel 
Jan 2007 Ziplevel 
+0

Können Sie besser beschreiben, was Sie wollen? Bitte geben Sie einige Beispiel-Eingabe und -Ausgabe. Es würde auch helfen, Ihre versuchte Lösung zu zeigen. Siehe [MCVE]. –

+0

@JohnKugelman Sorry, wenn meine Frage nicht beschreibend war. Ich habe es jetzt aktualisiert. Bitte lassen Sie mich wissen, wenn das hilft – sady

+0

@JohnKugelman Ich fand eine, die meinen Zweck erfüllt. Entschuldigung für die Verwirrung. Befehl Ich habe 'awk '{print>" newfile.txt "}' * .txt' – sady

Antwort

2
find . -name \*.txt -type f | xargs -r cat > /tmp/output_file.txt 

Erklärt:

  • find . -name \*.txt -type f Suche rekursiv aus . Verzeichnis für jede Datei *.txt
  • xargs -r cat Fahrbefehl cat foundFile1.txt foundFile2.txt ...
  • > /tmp/output_file.txt Redirect Ausgang /tmp/output_file.txt
  • Datei
+0

Vielen Dank ... das hat funktioniert !! – sady

2

This?

cat *.txt > newfile.txt 
+0

das funktioniert auch. Noch eine Frage. zusammen mit 11000 Textdateien habe ich auch 56 Unterverzeichnisse, die wiederum ein paar mehr Textdateien haben. Wie loopiere ich Textdateien unter diesen Unterverzeichnissen? – sady

+0

Dann schauen Sie auf die 'find' Antwort oder verwenden Sie globstar' globbing in bash> = 4.0 (und wenn Sie nur eine Tiefe von zwei haben). –

Verwandte Themen