Linux怎么合并文件 Linux将多个文本文件合并为一个【方法】

  技术百科     |      2026-01-24 00:00
Linux提供五种文件合并方法:一、cat命令顺序纵向拼接;二、tee命令分步追加并实时查看;三、awk命令插入分隔标识保留来源信息;四、paste命令横向并排合并;五、find与xargs批量处理多目录文件。

如果您需要将多个文本文件的内容整合到单个文件中,Linux 提供了多种命令行工具来实现这一操作。以下是几种常用且互不依赖的合并方法:

一、使用 cat 命令合并文件

cat 命令是最直接的方式,它按顺序读取指定文件并输出到标准输出或重定向至目标文件,适用于纯文本且无需修改内容格式的场景。

1、打开终端,进入包含待合并文件的目录。

2、执行命令:cat file1.txt file2.txt file3.txt > merged.txt

3、确认生成结果:ls -l merged.txt

4、查看合并后内容:cat merged.txt

二、使用 tee 命令追加合并

tee 命令可将标准输入同时写入文件和终端,适合分步合并或需实时查看中间结果的情形,支持追加模式避免覆盖已有内容。

1、先清空或新建目标文件:> merged.txt

2、依次追加各文件内容:cat file1.txt | tee -a merged.txt

3、继续追加下一个文件:cat file2.txt | tee -a merged.txt

4、重复步骤直至全部加入,最终文件保持原有换行结构。

三、使用 awk 合并并添加分隔标识

awk 可在合并过程中插入自定义分隔符(如文件名或空行),便于后续识别各源文件边界,适用于需保留来源信息的归档场景。

1、执行带文件名标记的合并:awk 'FNR==1{print "\n=== " FILENAME " ==="} 1' file1.txt file2.txt > merged.txt

2、验证分隔效果:head -n 10 merged.txt

3、若需空行分隔,将命令中的 "\n=== " FILENAME " ===" 替换为 "\n"

四、使用 paste 命令横向合并

paste 命令默认以制表符连接对应行,适用于多文件行数一致、需并排对比或组合字段的场景,不同于纵向拼接。

1、确保所有文件行数相同,否则缺失行位置显示为空。

2、执行横向合并:paste file1.txt file2.txt file3.txt > merged.txt

3、指定分隔符(例如逗号):paste -d',' file1.txt file2.txt > merged.csv

4、检查输出格式:head merged.csv

五、使用 find 与 xargs 批量合并匹配文件

当待合并文件数量较多或分散在子目录中时,find 可定位符合条件的文件,xargs 将其批量传递给 cat 处理,提升效率。

1、在当前目录及子目录中查找所有 .log 文件:find . -name "*.log" -type f

2、将查找到的文件合并为 single.log:find . -name "*.log" -type f -print0 | xargs -0 cat > single.log

3、确认合并文件大小:wc -l single.log

4、注意:-print0 与 -0 配合可安全处理含空格

或特殊字符的路径。