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.