在 macos 中可用终端命令高效合并多个文本文档:一、cat 命令直接串联合并;二、printf 配合换行符实现空行分隔;三、awk 添加文件名标题与分隔线;四、find 递归查找并合并子目录中的文本文件。

如果您需要在 macOS 系统中将多个文本文档按顺序合并为一个文件,终端命令提供了高效、无损的批量处理方式。以下是几种基于终端的合并方法:
一、使用 cat 命令串联合并
cat 命令可将多个文本文件按指定顺序读取并输出到新文件中,适用于纯文本(.txt、.log、.md 等)且无需格式转换的场景。
1、打开“终端”应用(可通过 Spotlight 搜索 Terminal)。
2、使用 cd 命令切换至存放待合并文本文件的目录,例如:cd ~/Documents/texts/。
3、执行合并命令,将 file1.txt、file2.txt、file3.txt 合并为 merged.txt:cat file1.txt file2.txt file3.txt > merged.txt。
4、如需合并当前目录下所有 .txt 文件(按字母顺序),运行:cat *.txt > all_merged.txt。
二、使用 printf 配合换行符合并
当需确保每个源文件内容之间有空行分隔,避免相邻文件末尾与开头粘连时,printf 提供更可控的拼接逻辑。
1、进入目标目录后,运行以下命令:printf '%s\n\n' *.txt | sed '/^$/q' > merged_with_gaps.txt。
2、若仅合并特定文件(如 report_a.txt 和 report_b.txt),使用:printf '%s\n\n' report_a.txt report_b.txt | xargs -I{} sh -c 'cat {}' > merged_report.txt。
三、使用 awk 实现带序号与分隔线的合并
awk 可在合并过程中为每个文件添加标题标记及分隔线,便于后续识别各段来源,适合归档或审阅用途。
1、执行命令以逐个读取文件并在开头插入分隔块:awk 'FNR==1{print "\n=== " FILENAME " ===\n"} {print}' *.txt > annotated_merge.txt。
2、若需跳过空文件,增强健壮性,追加条件判断:awk 'FNR==1 && NF>0{print "\n--- " FILENAME " ---"} NF>0' *.txt > clean_annotated.txt。
四、使用 find 递归合并子目录中的文本文件
当文本文件分散在多层子目录中,find 可定位全部匹配项并交由 cat 统一处理,避免手动整理路径。
1、在父目录中运行查找与合并组合命令:find . -name "*.txt" -type f -print0 | sort -z | xargs -0 cat > recursive_merged.txt。
2、如需排除隐藏文件(以 . 开头的文件),添加 -not -path "*/.*" 条件:find . -not -path "*/.*" -name "*.txt" -type f -print0 | sort -z | xargs -0 cat > visible_only.txt。









