我想做unix“ cat”的确切工作,但要在PC上做。 Windows命令行是否有一个简单的等效命令?

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

在Unix中:

cat *fna >all_fna_files.fna


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

评论

这些建议均不能接受STDIN的重定向。

Powershell:cat file.txt

交叉复制:stackoverflow.com/q/60244/11683

提供的答案是在不同shell中可用的所有命令。是否有一个可执行程序将其参数发送到stdout?

#1 楼

type
可在command.comcmd和PowerShell中运行(尽管在后者中,它是Get-Content的别名,因此cat也是别名,因此您可以使用其中任何一个)。 br />
在计算中,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


评论


内容丰富的答案,所以+1。希望我可以给Microsoft一个-1的名称,但该名称却模棱两可。类型文件名让我认为该命令应返回文件类型,而不是文件内容!

– PenguinCoder
2012年6月10日下午16:33

猫似乎并没有好多少。

–David Boike
2012年6月10日下午16:51

@DavidBoike尽管cat来自con_cat_enate AFAIR。

–马克·赫德
2012年6月10日17:55

@davidboike更好,因为它实际上意味着并代表其作用:cat程序是一个标准的Unix实用程序,用于连接和列出文件。该名称是catenate的缩写,是catenate的同义词。维基百科文章MS-DOS类型命令可以说相同吗?

– PenguinCoder
2012年6月10日18:21

@PenguinCoder除类型不连接文件;只需将其内容输入屏幕即可。在示例中,实际上是合并文件而不是type命令的管道。

–安迪
2012年6月10日19:50



#2 楼

在命令外壳中:

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


(但这是在命令外壳中使用control-Z作为文件标记的结尾,因此在某些情况下不适用)。 br />
在PowerShell中:

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


,您可以控制(使用-Encoding参数)文件编码(这允许对读取的文件使用不同的编码进行转码)并写)。

评论


PowerShell别名也属于Get-Content。它旨在接受许多基本的Linux命令,而无需进行任何修改(如果有的话)。

–鲍勃
2012年6月10日上午9:12

Bob,除非涉及开关和选项。

–乔伊
2012年6月10日16:25

@Richard:复制/ b a + b + c output.txt不会在Ctrl-Z上进行检查。如果文件中没有ctrl-Z,则两个变体都将复制整个文件。

–Tonny
2012年6月10日18:28

请注意,您也可以包含通配符,Windows中通配符的工作方式意味着您不会被不包含+的扩展列表所困扰,因此请复制[/ b] * .fna all_fna_files.fna。

–Random832
2012年6月10日22:24

如果我从以前的测试中回想起,曾经使用COPY和/ B进行串联,将忽略CTRL-Z / EOF标记,并且可以正确进行串联!但从副本/来判断?您可能需要做很多/ B,好像在复制之后,在每个src文件之后,在dest文件之后。

– barlop
2012年6月14日下午6:38

#3 楼

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

cat log*.txt >> myBigLogFile.txt 


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

评论


也许您的Windows操作系统是GNU,或者您的路径中有Cygwin,或者正在使用Powershell,因为干净的Windows 7系统上不存在cat。 DOS不再是一回事,但是大多数人会用它来引用cmd.exe。

–Shanteva
16年5月9日在14:22

Windows CMD和MS-DOS是不同的东西。在cmd和DOS中都没有cat命令,在powershell中只有cat别名

–phuclv
17年6月16日在1:15

您还可以使用键入命令键入* .txt> file.merge

– Riz
17-10-27在15:00