¿Cuál es el equivalente de Windows del comando cat Unix?

203

Quiero hacer exactamente lo que hace unix "cat", pero en mi PC. ¿Hay un comando equivalente simple para la línea de comandos de Windows?

Específicamente, quiero crear un archivo a partir de todos los archivos de un tipo dado en una carpeta

En Unix:

cat *fna >all_fna_files.fna

(que une todos los archivos de texto ".fna" en un archivo de texto grande)

Kirt
fuente
Ninguna de estas sugerencias puede aceptar una redirección de STDIN.
será el
2
Powershell:cat file.txt
Kolob Canyon el
Duplicado cruzado: stackoverflow.com/q/60244/11683
GSerg

Respuestas:

253

type

Funciona en command.com, cmdy PowerShell (aunque en este último es un alias para Get-Content, por lo que es cat, por lo que podría usar cualquiera). Del artículo de Wikipedia (énfasis mío):

En informática, el tipo es un comando en varios VMS. AmigaDOS, CP / M, DOS, OS / 2 e intérpretes de línea de comandos de Microsoft Windows (shells) como COMMAND.COM, cmd.exe, 4DOS / 4NT y Windows PowerShell. Se utiliza para mostrar el contenido de los archivos especificados. Es análogo 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
ckhan
fuente
66
Buena respuesta informativa, entonces +1. Ojalá pudiera darle a Microsoft un -1 aunque por el nombre de comando completamente ambiguo. type filenameme hace pensar que el comando debería devolver el tipo de archivo, ¡no el contenido del archivo!
PenguinCoder
28
Cat realmente no parece mucho mejor.
David Boike
99
@davidboike Es mucho mejor porque en realidad significa y representa lo que hace: el programa cat es una utilidad estándar de Unix que concatena y enumera archivos. El nombre es una abreviatura de catenate, un sinónimo de concatenate. Artículo de Wikipedia ¿Puedes decir lo mismo para el typecomando MS-DOS ?
PenguinCoder
11
@PenguinCoder Excepto typeno concatena archivos; es solo typesu contenido en la pantalla. Es la tubería en el ejemplo que realmente combina los archivos, no el typecomando.
Andy
22

Desde el shell de comandos:

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

(Pero eso sigue al uso del comando shells de control-Z como marcador de fin de archivo, por lo que no es adecuado en algunos casos).

En PowerShell:

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

y puede controlar (usando el -Encodingparámetro) la codificación del archivo (que permite la transcodificación usando diferentes codificaciones para la lectura y escritura).

Ricardo
fuente
8
PowerShell alias cata Get-Contenttambién. Está diseñado para aceptar muchos comandos básicos de Linux sin mucha modificación, si es que hay alguna.
Bob
1
Bob, excepto si hay interruptores y opciones involucrados.
Joey
@ Richard: Copiar / ba + b + c output.txt no comprueba Ctrl-Z. Ambas variantes copiarán el archivo completo si NO hay ctrl-Z en el archivo.
Tonny
2
Observe que puede incluir comodines también, la forma en que funcionan los comodines en las ventanas significa que no será en mal estado por la lista de expansión no contiene una +, así que copy [/b] *.fna all_fna_files.fna..
Random832
Si recuerdo de una prueba anterior que hice una vez, usar COPIA con / B para concatenar, ignorará los marcadores CTRL-Z / EOF, ¡y hará la concatenación correctamente! pero a juzgar por copia /? Es posible que necesite hacer mucho / B como parece, tal vez después de la copia, después de cada archivo src y después del archivo dest ... extraño.
barlop
1

Acabo de usar el comando cat en DOS (Windows 7 Pro) de la siguiente manera y fusioné con éxito 3 archivos (log1.txt, log2.txt, log3.txt) en un solo archivo:

cat log*.txt >> myBigLogFile.txt 

Nota: cat log*.txt > myBigLogFile2.txttambién proporcione el mismo resultado, pero anulará el archivo anterior.

Heidi
fuente
3
tal vez tenga GNU para Windows, o Cygwin en su camino, o esté usando powershell porque cat no existe en un sistema Windows 7 limpio. DOS ya no es una cosa, pero la mayoría de la gente lo usaría para referirse a cmd.exe.
Shanteva
1
Windows CMD y MS-DOS no son lo mismo . No hay catcomando en cmd y DOS, solo catalias en powershell
phuclv
también puedes usar el typecomandotype *.txt > file.merge
Riz