462 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.

799voto

Robert Greiner Punkte 28052

Damit wird die Ausgabe an all.txt angehängt

cat *.txt >> all.txt

Dies überschreibt all.txt

cat *.txt > all.txt

227voto

Chinmay Kanchi Punkte 58341

Denken Sie daran, dass bei allen bisher vorgestellten Lösungen die Shell die Reihenfolge bestimmt, in der die Dateien verkettet werden. Für Bash, IIRC, ist das die alphabetische Reihenfolge. Wenn die Reihenfolge wichtig ist, sollten Sie die Dateien entweder entsprechend benennen (01Datei.txt, 02Datei.txt usw.) oder jede Datei in der Reihenfolge angeben, in der sie verkettet werden soll.

$ cat file1 file2 file3 file4 file5 file6 > out.txt

33voto

Greg Hewgill Punkte 882617

Der Windows-Shell-Befehl type kann dies tun:

type *.txt > outputfile.txt

Typ type Befehl schreibt auch Dateinamen auf stderr, die nicht von der > Operator umleiten (wird aber auf der Konsole angezeigt).

29voto

Carl Norum Punkte 210051

Sie können die Windows-Shell verwenden copy um Dateien zu verketten.

C:\> copy *.txt outputfile

Aus der Hilfe:

Um Dateien anzuhängen, geben Sie eine einzelne Datei als Ziel, aber mehrere Dateien als Quelle an (mit Platzhaltern oder im Format file1+file2+file3).

20voto

GPrathap Punkte 6609

Wie wäre es mit diesem Ansatz?

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

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