Was ist das Windows-Äquivalent zum Unix-Befehl cat?


203

Ich möchte genau das tun, was Unix "cat" tut, aber auf meinem PC. Gibt es einen einfachen äquivalenten Befehl für die Windows-Befehlszeile?

Insbesondere möchte ich eine Datei aus allen Dateien eines bestimmten Typs in einem Ordner erstellen

In Unix:

cat *fna >all_fna_files.fna

(der alle ".fna" -Textdateien zu einer großen Textdatei zusammenfügt)


Keiner dieser Vorschläge kann eine Weiterleitung von STDIN akzeptieren.
— wird am

2
Powershell:cat file.txt
— Kolob Canyon

Antworten:


253

type

Es funktioniert command.commit cmd, und PowerShell (obwohl es in letzterem ein Alias ​​für Get-Contentist cat, können Sie also auch eines verwenden). Aus dem Wikipedia-Artikel (Schwerpunkt meiner):

Beim Rechnen ist type ein Befehl in verschiedenen VMS. AmigaDOS-, CP / M-, DOS-, OS / 2- und Microsoft Windows-Befehlszeileninterpreter (Shells) wie COMMAND.COM, cmd.exe, 4DOS / 4NT und Windows PowerShell. Es wird verwendet, um den Inhalt der angegebenen Dateien anzuzeigen. Es ist analog zum Unix-Befehl cat.

C:\>echo hi > a.txt
C:\>echo bye > b.txt
C:\>type a.txt b.txt > c.txt
C:\>type c.txt
hi
bye

6
Gute informative Antwort, also +1. Ich wünschte, ich könnte Microsoft eine -1 für den äußerst mehrdeutigen Befehlsnamen geben. type filenamelässt mich denken, dass der Befehl den Dateityp zurückgeben sollte, nicht den Inhalt der Datei!
— PenguinCoder

28
Cat scheint nicht viel besser zu sein.
— David Boike

9
@davidboike Es ist viel besser, weil es tatsächlich bedeutet und für das steht, was es tut: Das cat-Programm ist ein Standard-Unix-Dienstprogramm, das Dateien verkettet und auflistet. Der Name ist eine Abkürzung für Verkettung, ein Synonym für Verkettung. Wikipedia-Artikel Können Sie dasselbe für den MS-DOS- typeBefehl sagen ?
— PenguinCoder

11
@PenguinCoder Except typeverkettet keine Dateien. es ist nur typeihr Inhalt auf dem Bildschirm. Es ist das Piping im Beispiel, das die Dateien kombiniert, nicht der typeBefehl.
— Andy


22

Aus der Kommandozeile:

copy a.txt + b.txt + c.txt output.txt

(Dies folgt jedoch dem Befehl shells, mit dem control-Z als Dateiende-Markierung verwendet wird. In einigen Fällen ist dies daher nicht geeignet.)

In PowerShell:

get-content a.txt,b.txt,c.txt | out-file output.txt

und Sie können die Dateicodierung (unter Verwendung von -EncodingParametern) steuern ( wodurch die Transcodierung durch Verwendung unterschiedlicher Codierungen für das Lesen und Schreiben ermöglicht wird).


8
Powershell - Aliase catzu Get-Contentauch. Es wurde entwickelt, um viele grundlegende Linux-Befehle zu akzeptieren, ohne dass Änderungen vorgenommen werden müssen.
— Bob

1
Bob, außer wenn Schalter und Optionen beteiligt sind.
— Joey

@Richard: Copy / ba + b + c output.txt sucht nicht nach Strg-Z. Beide Varianten kopieren die gesamte Datei, wenn die Datei KEIN STRG-Z enthält.
— Tonny

2
Beachten Sie, dass Sie Platzhalter umfassen, die Art und Weise Platzhalter in den Fenstern arbeiten bedeutet , dass Sie nicht von der Expansionsliste eines nicht vermasseln enthalten , werden +, so copy [/b] *.fna all_fna_files.fna..
— Random832

Wenn ich mich an einen alten Test erinnere, den ich einmal durchgeführt habe, ignoriert die Verwendung von COPY mit / B zum Verketten die STRG-Z / EOF-Marken und führt die Verkettung ordnungsgemäß durch! aber nach kopie urteilen /? Möglicherweise müssen Sie eine Menge von / B ausführen, wie es scheint, vielleicht nach dem Kopieren, nach jeder src-Datei und nach der dest-Datei .. seltsam.
— Barlop

1

Ich habe gerade den Befehl cat unter DOS (Windows 7 Pro) folgendermaßen verwendet und 3 Dateien (log1.txt, log2.txt, log3.txt) erfolgreich zu einer einzigen Datei zusammengefügt:

cat log*.txt >> myBigLogFile.txt 

Hinweis: cat log*.txt > myBigLogFile2.txtGeben Sie auch das gleiche Ergebnis an, aber die vorherige Datei wird überschrieben.


3
Vielleicht haben Sie GNU für Windows oder Cygwin auf Ihrem Weg oder verwenden Powershell, weil cat auf einem sauberen Windows 7-System nicht vorhanden ist. DOS ist keine Sache mehr, aber die meisten Leute würden es benutzen, um auf cmd.exe zu verweisen.
— Shanteva

1
Windows CMD und MS-DOS sind nicht dasselbe . Es gibt keinen catBefehl in cmd und DOS, nur einen catAlias ​​in Powershell
— phuclv

Sie können auch typeBefehl verwendentype *.txt > file.merge
— Riz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.