在Bash中将多个文本文件连接成单个文件
什么是最快最实用的方法,将目录中的所有* .txt文件合并为一个大文本文件?
目前我使用cygwin的窗口,所以我有权访问BASH。
Windows的shell命令也不错,但我怀疑有一个。
这将输出附加到all.txt
cat *.txt >> all.txt
这将覆盖all.txt
cat *.txt > all.txt
请记住,对于迄今为止给出的所有解决scheme,shell决定文件连接的顺序。 对于Bash,IIRC,这是字母顺序。 如果顺序很重要,您应该适当地命名这些文件(01file.txt,02file.txt等等),或者按照您想要连接的顺序指定每个文件。
$ cat file1 file2 file3 file4 file5 file6 > out.txt
Windowsshell命令type
可以这样做:
type *.txt >outputfile
Type type
命令还会将文件名写入stderr,这不会被>
redirect操作符捕获(但会显示在控制台上)。
您可以使用Windowsshell程序copy
来连接文件。
C:\> copy *.txt outputfile
从帮助:
要追加文件,请为目标指定一个文件,但为源指定多个文件(使用通配符或file1 + file2 + file3格式)。
用shell最实用的方法就是cat命令。 其他方式包括,
awk '1' *.txt > all.txt perl -ne 'print;' *.txt > all.txt
type [source folder]\*.[File extension] > [destination folder]\[file name].[File extension]
例如:
type C:\*.txt > C:\1\all.txt
这将采取C:\文件夹中的所有txt文件,并保存在C:\ 1文件夹的名称all.txt
要么
type [source folder]\* > [destination folder]\[file name].[File extension]
例如:
type C:\* > C:\1\all.txt
这将采取该文件夹中存在的所有文件,并把那里的内容在C:\ 1 \ all.txt
这个方法怎么样?
find . -type f -name '*.txt' -exec cat {} + >> output.txt
所有这些都是令人讨厌的
ls | grep *.txt | while read file; do cat $file >> ./output.txt; done;
容易的东西。