Qual é o equivalente do Windows ao comando cat do Unix?

203

Eu quero fazer exatamente o que o "gato" do unix faz, mas no meu PC. Existe um comando equivalente simples para a linha de comando do Windows?

Especificamente, quero criar um arquivo de todos os arquivos de um determinado tipo em uma pasta

No Unix:

cat *fna >all_fna_files.fna

(que une todos os arquivos de texto ".fna" em um grande arquivo de texto)

Kirt
fonte
Nenhuma dessas sugestões pode aceitar um redirecionamento do STDIN.
vai
2
Powershell:cat file.txt
Kolob Canyon 05/10
Duplicação cruzada: stackoverflow.com/q/60244/11683
GSerg 08/07

Respostas:

253

type

Ele funciona através de command.com, cmde PowerShell (embora no último seja um alias para Get-Content, assim é cat, para que você possa usá-lo). Do artigo da Wikipedia (ênfase minha):

Na computação, o tipo é um comando em vários VMS. Intérpretes de linha de comando (shells) AmigaDOS, CP / M, DOS, OS / 2 e Microsoft Windows, como COMMAND.COM, cmd.exe, 4DOS / 4NT e Windows PowerShell. É usado para exibir o conteúdo dos arquivos especificados. É análogo ao comando cat do Unix.

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
fonte
6
Boa resposta informativa, então +1. Gostaria de poder dar um -1 à Microsoft para o nome do comando totalmente ambíguo. type filenameme faz pensar que o comando deve retornar o tipo de arquivo, não o conteúdo do arquivo!
PenguinCoder
28
Gato realmente não parece muito melhor.
David Boike
9
@davidboike É muito melhor porque realmente significa e representa o que faz: O programa cat é um utilitário Unix padrão que concatena e lista arquivos. O nome é uma abreviação de catenate, sinônimo de concatenate. Artigo da Wikipedia Você pode dizer o mesmo para o typecomando do MS-DOS ?
PenguinCoder
11
@PenguinCoder Except typenão concatena arquivos; apenas typeo conteúdo é exibido na tela. É a tubulação no exemplo que está realmente combinando os arquivos, não o typecomando.
Andy
22

No shell de comando:

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

(Mas isso segue o comando shells, use o controle-Z como um marcador de fim de arquivo, portanto, não é adequado em alguns casos).

No PowerShell:

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

e você pode controlar (usando o -Encodingparâmetro) a codificação do arquivo (que permite a transcodificação usando diferentes codificações para leitura e gravação).

Richard
fonte
8
Aliases do PowerShell catpara Get-Contenttambém. Ele foi projetado para aceitar muitos comandos básicos do Linux sem muita modificação, se houver alguma.
Bob
11
Bob, exceto se opções e opções estiverem envolvidas.
Joey
@ Richard: Copiar / ba + b + c output.txt não verifica no Ctrl-Z. Ambas as variantes copiarão o arquivo inteiro se NÃO houver ctrl-Z no arquivo.
Tonny
2
Note que você pode incluir curingas também, a forma como wildcards funciona no Windows significa que você não será confuso pela lista de expansão não contendo um +, por isso copy [/b] *.fna all_fna_files.fna..
Random832
se me lembro de um teste antigo que fiz uma vez, usando COPY com / B para concatenar, ignorará os marcadores CTRL-Z / EOF e fará a concatenação corretamente! mas a julgar pela cópia /? você pode precisar fazer muito / B como parece, talvez, depois da cópia, depois de cada arquivo src e depois do arquivo de destino .. estranho.
barlop
1

Acabei de usar o comando cat no DOS (Windows 7 Pro) da seguinte maneira e mesclou com êxito 3 arquivos (log1.txt, log2.txt, log3.txt) em um único arquivo:

cat log*.txt >> myBigLogFile.txt 

Nota: cat log*.txt > myBigLogFile2.txttambém forneça o mesmo resultado, mas ele substituirá o arquivo anterior.

Heidi
fonte
3
talvez você tenha o GNU para Windows ou Cygwin no seu caminho ou esteja usando o PowerShell porque o gato não existe em um sistema Windows 7 limpo. O DOS não é mais uma coisa, mas a maioria das pessoas o usaria para se referir ao cmd.exe.
Shanteva
11
Windows CMD e MS-DOS não são a mesma coisa . Não há nenhum catcomando em ambos os cmd e DOS, única catalias no powershell
phuclv
você também pode usar o typecomandotype *.txt > file.merge
Riz 27/10