将目录中所有*.txt文件合并为一个大文本文件的最快和最实用的方法是什么?
目前我正在使用cygwin的窗口,所以我可以访问BASH。
Windows shell命令也会很好,但我怀疑有没有一个。
将目录中所有*.txt文件合并为一个大文本文件的最快和最实用的方法是什么?
目前我正在使用cygwin的窗口,所以我可以访问BASH。
Windows shell命令也会很好,但我怀疑有没有一个。
当前回答
这种方法怎么样?
find . -type f -name '*.txt' -exec cat {} + >> output.txt
其他回答
这种方法怎么样?
find . -type f -name '*.txt' -exec cat {} + >> output.txt
Windows shell命令类型可以这样做:
type *.txt > outputfile.txt
Type Type命令还将文件名写入stderr,这些文件名不会被>重定向操作符捕获(但会显示在控制台上)。
如果文件列表太长,点赞最多的答案将失败。
更可移植的解决方案是使用fd
fd -e txt -d 1 -X awk 1 > combined.txt
-d 1将搜索限制在当前目录。如果省略此选项,则它将递归地查找当前目录中的所有.txt文件。 -X(也称为——exec-batch)一次性为所有搜索结果执行命令(在本例中为awk 1)。
注意,fd不是一个“标准的”Unix程序,所以您可能需要安装它
当你遇到问题,把all.txt转换成all.txt, 您可以尝试检查all.txt是否存在,如果存在,删除
是这样的:
[-e $"all.txt"] && rm $"all.txt"
请记住,对于目前给出的所有解决方案,shell决定文件连接的顺序。巴什,IIRC,这是字母顺序。如果顺序很重要,您应该适当地命名这些文件(01file.txt, 02file.txt,等等),或者按照您想要连接的顺序指定每个文件。
$ cat file1 file2 file3 file4 file5 file6 > out.txt