Apa yang setara dengan Windows dari perintah kucing Unix?

203

Saya ingin melakukan apa yang unix "cat" lakukan, tetapi di PC saya. Apakah ada perintah setara yang sederhana untuk baris perintah Windows?

Secara khusus saya ingin membuat file dari semua file dari jenis yang diberikan dalam folder

Di Unix:

cat *fna >all_fna_files.fna

(yang menggabungkan semua file teks ".fna" menjadi satu file teks besar)

Kirt
sumber
Tidak satu pun dari saran ini dapat menerima arahan ulang STDIN.
akan
2
Powershell:cat file.txt
Kolob Canyon
Duplikat silang: stackoverflow.com/q/60244/11683
GSerg

Jawaban:

253

type

Ia bekerja di seberang command.com,, cmddan PowerShell (meskipun di yang terakhir ini adalah alias untuk Get-Content, begitu juga cat, sehingga Anda bisa menggunakan keduanya). Dari artikel Wikipedia (penekanan pada saya):

Dalam komputasi, ketik adalah perintah dalam berbagai VMS. AmigaDOS, CP / M, DOS, OS / 2 dan Microsoft Windows command line interprers (shells) seperti COMMAND.COM, cmd.exe, 4DOS / 4NT dan Windows PowerShell. Ini digunakan untuk menampilkan isi file yang ditentukan. Ini analog dengan perintah 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
sumber
6
Jawaban informatif yang bagus, jadi +1. Berharap saya bisa memberi Microsoft -1 untuk nama perintah yang sama sekali tidak jelas. type filenamemembuat saya berpikir bahwa perintah tersebut harus mengembalikan jenis file, bukan isi file!
PenguinCoder
28
Kucing sepertinya tidak terlalu baik.
David Boike
9
@davidboike Jauh lebih baik karena sebenarnya berarti dan mewakili apa yang dilakukannya: Program cat adalah utilitas Unix standar yang menggabungkan dan membuat daftar file. Namanya adalah singkatan dari catenate, sinonim dari concatenate. Artikel Wikipedia Bisakah Anda mengatakan hal yang sama untuk perintah MS-DOS type??
PenguinCoder
11
@PenguinCoder Kecuali typetidak menyatukan file; itu hanya typeisinya ke layar. Ini adalah perpipaan dalam contoh yang sebenarnya menggabungkan file, bukan typeperintah.
Andy
22

Dari shell perintah:

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

(Tapi itu mengikuti perintah shell menggunakan control-Z sebagai akhir dari penanda file, jadi tidak cocok dalam beberapa kasus).

Di PowerShell:

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

dan Anda dapat mengontrol (menggunakan -Encodingparameter) penyandian file (yang memungkinkan transcoding dengan menggunakan penyandian berbeda untuk membaca dan menulis).

Richard
sumber
8
PowerShell alias catuntuk Get-Contentjuga. Ini dirancang untuk menerima banyak perintah Linux dasar tanpa banyak, jika ada, modifikasi.
Bob
1
Bob, kecuali jika sakelar dan opsi terlibat.
Joey
@ Richard: Salin / ba + b + c output.txt tidak memeriksa Ctrl-Z. Kedua varian akan menyalin seluruh file jika TIDAK ADA ctrl-Z dalam file.
Tonny
2
Perhatikan bahwa Anda dapat memasukkan wildcard juga, cara wildcard bekerja di windows berarti Anda tidak akan dikacaukan oleh daftar ekspansi yang tidak mengandung +, jadi copy [/b] *.fna all_fna_files.fna..
Random832
jika saya ingat dari tes lama yang pernah saya lakukan, menggunakan COPY dengan / B untuk menggabungkan, akan mengabaikan penanda CTRL-Z / EOF, dan akan melakukan penggabungan dengan benar! tapi dilihat dari copy /? Anda mungkin perlu melakukan banyak / B seperti tampaknya mungkin setelah menyalin, setelah setiap file src dan setelah file dest .. aneh.
barlop
1

Saya baru saja menggunakan perintah cat di DOS (Windows 7 Pro) dengan cara berikut dan berhasil menggabungkan 3 file (log1.txt, log2.txt, log3.txt) menjadi satu file:

cat log*.txt >> myBigLogFile.txt 

Catatan: cat log*.txt > myBigLogFile2.txtjuga memberikan hasil yang sama, tetapi itu akan menggantikan file sebelumnya.

Heidi
sumber
3
mungkin Anda memiliki GNU untuk Windows, atau Cygwin di jalur Anda, atau menggunakan PowerShell karena kucing tidak ada pada sistem Windows 7 yang bersih. DOS bukan lagi suatu hal, tetapi kebanyakan orang akan menggunakannya untuk merujuk ke cmd.exe.
Shanteva
1
Windows CMD dan MS-DOS bukan hal yang sama . Tidak ada catperintah di cmd dan DOS, hanya catalias di PowerShell
phuclv
Anda juga dapat menggunakan typeperintahtype *.txt > file.merge
Riz