題 什麼是Windows等價的Unix命令貓?


我想完成unix“cat”的功能,但是在我的電腦上。是否有一個簡單的Windows命令行等效命令?

具體來說,我想從文件夾中給定類型的所有文件創建一個文件

在Unix中:

cat *fna >all_fna_files.fna

(將所有“.fna”文本文件合併為一個大文本文件)


130
2018-06-10 07:22


起源


這些建議都不能接受STDIN的重定向。 - will
電源外殼: cat file.txt - Kolob Canyon


答案:


type

它適用於 command.comcmd和PowerShell(雖然在後者中它是別名 Get-Content,是的 cat,所以你可以使用其中之一)。 來自 維基百科文章 (強調我的):

在計算中,type是各種VMS中的命令。 AmigaDOS,CP / M,DOS,OS / 2和Microsoft Windows命令行解釋程序(shell),如COMMAND.COM,cmd.exe,4DOS / 4NT和Windows PowerShell。它用於顯示指定文件的內容。 它類似於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

167
2018-06-10 07:47



貓似乎並沒有好多少。 - David Boike
@DavidBoike雖然cat來自con_cat_enate AFAIR。 - Mark Hurd
@davidboike它更好,因為它實際上意味著並代表它的作用: cat程序是一個標準的Unix實用程序,用於連接和列出文件。該名稱是catenate的縮寫,是連接的同義詞。  維基百科文章 你能說同樣的MS-DOS嗎? type 命令?? - PenguinCoder
@PenguinCoder除外 type 不連接文件;它只是 type他們的內容到屏幕上。它的實例中的管道實際上是組合文件,而不是 type 命令。 - Andy
MS-DOS可能繼承了 TYPE 來自CP / M的QDOS。 TYPE命令在控制台設備的當前記錄的磁盤上顯示ASCII源文件ufn的內容。 - α CVn


從命令shell:

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

(但是在命令shell之後使用control-Z作為文件標記的結尾,因此在某些情況下不合適)。

在PowerShell中:

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

你可以控制(使用 -Encoding 參數)文件編碼(允許通過使用不同的讀寫編碼)進行代碼轉換。


20
2018-06-10 07:33



PowerShell別名 cat 至 Get-Content 太。它的設計目的是接受許多基本的Linux命令,而不需要太多修改。 - Bob
鮑勃,除非涉及開關和選項。 - Joey
@Richard:複製/ b a + b + c output.txt不檢查Ctrl-Z。如果文件中沒有ctrl-Z,則兩個變體都將復制整個文件。 - Tonny
請注意,您也可以包含通配符,通配​​符在Windows中的工作方式意味著您不會被不包含通用卡的擴展列表弄亂 +所以 copy [/b] *.fna all_fna_files.fna.. - Random832
如果我從曾經做過的舊測試中回憶起來,使用COPY和/ B進行連接,將忽略CTRL-Z / EOF標記,並將正確進行連接!但是通過複製/?你可能需要做很多/ B似乎可能在復制後,每個src文件之後和dest文件之後...奇怪。 - barlop


我剛剛以下列方式在DOS(Windows 7 Pro)中使用了cat命令,並成功將3個文件(log1.txt,log2.txt,log3.txt)合併到一個文件中:

cat log*.txt >> myBigLogFile.txt 

注意: cat log*.txt > myBigLogFile2.txt 也提供相同的結果,但它將覆蓋以前的文件。


2
2018-03-20 13:41



也許你有GNU for Windows,或者你的路徑中的Cygwin,或者正在使用PowerShell,因為在乾淨的Windows 7系統上不存在cat。 DOS不再是一個東西,但大多數人會用它來引用cmd.exe。 - Shanteva
Windows CMD和MS-DOS不是一回事。沒有 cat 僅在cmd和DOS中執行命令 cat powershell中的別名 - phuclv
你也可以用 type 命令 type *.txt > file.merge - Riz