Qual è l'equivalente di Windows del comando cat Unix?


203

Voglio fare esattamente quello che fa unix "cat", ma sul mio PC. Esiste un semplice comando equivalente per la riga di comando di Windows?

In particolare, voglio creare un file da tutti i file di un determinato tipo in una cartella

In Unix:

cat *fna >all_fna_files.fna

(che unisce tutti i file di testo ".fna" in un unico grande file di testo)


Nessuno di questi suggerimenti può accettare un reindirizzamento di STDIN.
sarà il

2
Powershell:cat file.txt
Kolob Canyon,

Risposte:


253

type

Funziona su command.com, cmde PowerShell (sebbene in quest'ultimo sia un alias per Get-Content, quindi è cat, quindi potresti usare entrambi). Dalla articolo di Wikipedia (sottolineatura mia):

Nell'informatica, digitare è un comando in vari VMS. Interpreti della riga di comando (shell) AmigaDOS, CP / M, DOS, OS / 2 e Microsoft Windows come COMMAND.COM, cmd.exe, 4DOS / 4NT e Windows PowerShell. Viene utilizzato per visualizzare il contenuto dei file specificati. È analogo al comando Unix 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
Buona risposta informativa, quindi +1. Vorrei poter dare a Microsoft un -1 anche se per il nome del comando assolutamente ambiguo. type filenamemi fa pensare che il comando dovrebbe restituire il tipo di file, non il contenuto del file!
PenguinCoder il

28
Il gatto non sembra davvero molto meglio.
David Boike,

9
@davidboike È molto meglio perché in realtà significa e rappresenta ciò che fa: il programma cat è un'utilità Unix standard che concatena ed elenca i file. Il nome è un'abbreviazione di catenate, sinonimo di concatenato. Articolo di Wikipedia Puoi dire lo stesso per il typecomando MS-DOS ??
PenguinCoder il

11
@PenguinCoder Except typenon concatena i file; è solo typeil loro contenuto sullo schermo. È il piping nell'esempio che combina effettivamente i file, non il typecomando.
Andy,


22

Dalla shell dei comandi:

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

(Ma ciò segue le shell dei comandi che usano control-Z come indicatore di fine file, quindi non adatto in alcuni casi).

In PowerShell:

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

e puoi controllare (usando il -Encodingparametro) la codifica dei file (che consente la transcodifica usando codifiche diverse per la lettura e la scrittura).


8
PowerShell gli alias catdi Get-Contenttroppo. È progettato per accettare molti comandi Linux di base senza troppe modifiche.
Bob,

1
Bob, tranne se sono coinvolti switch e opzioni.
Joey,

@Richard: Copia / ba + b + c output.txt non verifica la presenza di Ctrl-Z. Entrambe le varianti copieranno l'intero file se NON c'è Ctrl-Z nel file.
Tonny,

2
Nota che puoi includere anche i caratteri jolly, il modo in cui funzionano i caratteri jolly in Windows significa che non sarai incasinato dall'elenco di espansione che non contiene un +, quindi copy [/b] *.fna all_fna_files.fna..
Casuale 832

se ricordo da un vecchio test che ho fatto una volta, usando COPIA con / B per concatenare, ignorerà i marcatori CTRL-Z / EOF e eseguirà la concatenazione correttamente! ma a giudicare dalla copia /? potresti aver bisogno di fare un sacco di / B come sembra forse dopo la copia, dopo ogni file src e dopo il file dest .. strano.
barlop

1

Ho appena usato il comando cat in DOS (Windows 7 Pro) nel modo seguente e ho unito con successo 3 file (log1.txt, log2.txt, log3.txt) in un singolo file:

cat log*.txt >> myBigLogFile.txt 

Nota: cat log*.txt > myBigLogFile2.txtfornisce anche lo stesso risultato, ma sovrascriverà il file precedente.


3
forse hai GNU per Windows o Cygwin nel tuo percorso o stai usando PowerShell perché cat non esiste su un sistema Windows 7 pulito. DOS non è più una cosa, ma la maggior parte delle persone lo userebbe per fare riferimento a cmd.exe.
Shanteva,

1
Windows CMD e MS-DOS non sono la stessa cosa . Non c'è alcun catcomando sia in cmd che in DOS, solo catalias in powershell
phuclv il

puoi anche usare il typecomandotype *.txt > file.merge
Riz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.