Mic*_*zek 229
这在技术上是cat("concatenate") 应该做的,即使大多数人只是使用它来将文件输出到 stdout。如果你给它多个文件名,它会按顺序输出它们,然后你可以将它重定向到一个新文件中;在所有文件的情况下只使用*(或者/path/to/directory/*如果您不在目录中)并且您的外壳将其扩展为所有文件名
$ cat * > merged-file
Run Code Online (Sandbox Code Playgroud)
小智 32
如果您的文件不在同一目录中,则可以在连接之前使用 find 命令:
find /path/to/directory/ -name *.csv -print0 | xargs -0 -I file cat file > merged.file
Run Code Online (Sandbox Code Playgroud)
当您的文件已经排序并且您想要合并它们以分析它们时非常有用。
更便携:
find /path/to/directory/ -name *.csv -exec cat {} + > merged.file
Run Code Online (Sandbox Code Playgroud)
这可能会或可能不会保留文件顺序。
小智 12
命令
$ cat * > merged-file
Run Code Online (Sandbox Code Playgroud)
实际上具有在串联中包含“合并文件”的不良副作用,从而创建失控文件。要解决此问题,请将合并的文件写入不同的目录;
$ cat * > ../merged-file
Run Code Online (Sandbox Code Playgroud)
或使用将忽略合并文件的模式匹配;
$ cat *.txt > merged-file
Run Code Online (Sandbox Code Playgroud)
Flo*_*ita 11
就像这里的其他人说的......你可以使用 cat
假设你有:
~/file01
~/file02
~/file03
~/file04
~/fileA
~/fileB
~/fileC
~/fileD
Run Code Online (Sandbox Code Playgroud)
而你只想要file01以file03和fileA到fileC:
cat ~/file01 ~/file02 ~/file03 ~/fileA ~/fileB ~/fileC > merged-file
Run Code Online (Sandbox Code Playgroud)
或者,使用大括号扩展:
cat ~/file0{1..3} ~/file{A..C} > merged-file
Run Code Online (Sandbox Code Playgroud)
或者,使用更高级的大括号扩展:
cat ~/file{0{1..3},{A..C}} > merged-file
Run Code Online (Sandbox Code Playgroud)
或者你可以使用for循环:
for i in file0{1..3} file{A..C}; do cat ~/"$i"; done > merged-file
Run Code Online (Sandbox Code Playgroud)