431 Stimmen

Verkettung mehrerer Textdateien in eine einzige Datei in Bash

Was ist der schnellste und pragmatischste Weg, um alle *.txt-Dateien in einem Verzeichnis zu einer großen Textdatei zusammenzufassen?

Derzeit verwende ich Windows mit cygwin, so dass ich Zugriff auf BASH habe.

Ein Windows-Shell-Befehl wäre auch schön, aber ich bezweifle, dass es einen solchen gibt.

18voto

GPrathap Punkte 6609

Wie wäre es mit diesem Ansatz?

find . -type f -name '*.txt' -exec cat {} + >> output.txt

7voto

ghostdog74 Punkte 305138

Der pragmatischste Weg mit der Shell ist der Befehl cat. Es gibt auch andere Möglichkeiten,

awk '1' *.txt > all.txt
perl -ne 'print;' *.txt > all.txt

3voto

Ori Punkte 39
type [source folder]\*.[File extension] > [destination folder]\[file name].[File extension]

Zum Beispiel:

type C:\*.txt > C:\1\all.txt

Das nimmt alle txt-Dateien im Ordner C:\ und speichert sie in C:\1 Ordner mit dem Namen all.txt

Oder

type [source folder]\* > [destination folder]\[file name].[File extension]

Zum Beispiel:

type C:\* > C:\1\all.txt

Das nimmt alle Dateien, die in dem Ordner vorhanden sind, und legt ihren Inhalt in C:\1\all.txt

1voto

Michael-zhang Punkte 11

Das können Sie so machen: cat [directory_path]/**/*.[h,m] > test.txt

wenn Sie {} die Dateierweiterung der zu suchenden Dateien anzugeben, gibt es ein Problem mit der Reihenfolge.

1voto

Michael Hall Punkte 2093

Die am meisten hochgestuften Antworten werden nicht berücksichtigt, wenn die Dateiliste zu lang ist.

Eine besser tragbare Lösung wäre die Verwendung von fd

fd -e txt -d 1 -X awk 1 > combined.txt

-d 1 beschränkt die Suche auf das aktuelle Verzeichnis. Wenn Sie diese Option weglassen, werden rekursiv alle .txt Dateien aus dem aktuellen Verzeichnis.
-X (auch bekannt als --exec-batch ) führt einen Befehl aus ( awk 1 in diesem Fall) für alle Suchergebnisse auf einmal.

Anmerkung, fd ist kein "Standard"-Unix-Programm, daher müssen Sie wahrscheinlich installieren es

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X