Unix 命令 cat 的 Windows 等价物是什么?

Kir*_*irt 311 windows unix cat

我想完全按照unix“cat”做的事情,但是在我的电脑上。Windows 命令行是否有简单的等效命令?

具体来说,我想从文件夹中给定类型的所有文件创建一个文件

在 Unix 中:

cat *fna >all_fna_files.fna
Run Code Online (Sandbox Code Playgroud)

(将所有“.fna”文本文件合并为一个大文本文件)

ckh*_*han 395

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
Run Code Online (Sandbox Code Playgroud)

  • 猫似乎并没有好到哪里去。 (49认同)
  • @PenguinCoder 除了 `type` 不连接文件;它只是在屏幕上“输入”他们的内容。它是示例中实际组合文件的管道,而不是 `type` 命令。 (21认同)
  • @davidboike 它要好得多,因为它实际上意味着并代表它的作用: * cat 程序是一个标准的 Unix 实用程序,用于连接和列出文件。这个名字是catenate的缩写,是concatenate的同义词。* [维基百科文章](http://en.wikipedia.org/wiki/Cat_(Unix)) 你能对MS-DOS的`type`命令说同样的话吗? ?? (19认同)
  • 很好的信息性答案,所以+1。希望我可以给 Microsoft 一个 -1,因为命令名称完全不明确。`type filename` 让我觉得命令应该返回文件的类型,而不是文件的内容! (13认同)
  • @DavidBoike 虽然 cat 来自 con_cat_enate AFAIR。 (8认同)
  • MS-DOS 可能通过 QDOS 从 CP/M 继承了 `TYPE`。[TYPE 命令在控制台设备上显示当前登录磁盘上的 ASCII 源文件 ufn 的内容。](http://web.archive.org/web/20100812024127/http://www.iso.port.ac .uk/~mike/interests/chistory/documents/cpm-22-manual/ch1.html#Section_1.4.5) (5认同)
  • @PenguinCoder a·nal·o·gous/əˈnaləgəs/ 形容词:1.在**某些方面**具有可比性,通常以更清晰的方式比较事物的性质。 (3认同)
  • @PenguinCoder 你为什么要指责微软?在我看来,他们只是遵循了 VMS 的现有约定。 (2认同)
  • @Andy 你确定它没有连接吗?C:\>type a.txt b.txt > c.txt 看,TYPE 命令的两个参数在那里,它 > 不是 >>。键入每个是连接它们。此外,看起来像 > 和 >> 这样的重定向运算符实际上并不称为管道。管道只是重定向的一种形式,您知道,| ,这里不使用。见 http://en.wikipedia.org/wiki/Redirection_(computing)#Piping (2认同)
  • @Andy我认为这个评论链中遗漏的核心点是“type”和“cat”都_do_连接文件的观点:它们只是将结果写入最明智的一个位置:stdout。坦率地说,我认为它们都不利于直观的吸收/猜测/识别,而且一旦你想出一种方法来记住它们,它们都同样明智(`type`“类型”文件内容输出到输出,`cat`( con)将文件连接到输出)。 (2认同)

Ric*_*ard 30

从命令外壳:

copy a.txt + b.txt + c.txt output.txt
Run Code Online (Sandbox Code Playgroud)

(但这遵循命令 shell 使用 control-Z 作为文件结束标记,因此在某些情况下不适合)。

在 PowerShell 中:

get-content a.txt,b.txt,c.txt | out-file output.txt
Run Code Online (Sandbox Code Playgroud)

并且您可以控制(使用-Encoding参数)文件编码(允许通过使用不同的读取和写入编码进行转码)。

  • PowerShell 也将 `cat` 别名为 `Get-Content`。它旨在接受许多基本的 Linux 命令,而无需进行大量修改(如果有的话)。 (8认同)
  • 请注意,您也可以包含通配符,通配​​符在 Windows 中的工作方式意味着您不会被不包含 `+` 的扩展列表搞砸,所以 `copy [/b] *.fna all_fna_files.fna`.. (2认同)

小智 5

我刚刚按照以下方式在DOS(Windows 7 Pro)中使用cat命令并成功将3个文件(log1.txt,log2.txt,log3.txt)合并为一个文件:

cat log*.txt >> myBigLogFile.txt 
Run Code Online (Sandbox Code Playgroud)

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

  • 也许您的路径中有 GNU for Windows 或 Cygwin,或者正在使用 powershell,因为干净的 Windows 7 系统上不存在 cat。 DOS 已经不再是一个东西了,但大多数人会用它来指代 cmd.exe。 (12认同)
  • [Windows CMD 和 MS-DOS 不是一回事](https://superuser.com/q/451432/241386)。 cmd 和 DOS 中都没有“cat”命令,powershell 中只有“cat”别名 (2认同)