在mac终端中可用cat、awk等命令合并文本文件:cat *.txt > combined.txt覆盖写入;指定顺序需手动列文件名或用xargs;awk可添加分隔线;zsh中用setopt extended_glob和(#a1)实现数值排序。

在Mac终端中把多个文本文件合并成一个文件,是日常处理日志、代码片段或配置备份时的高频操作,不需要打开任何图形界面程序,全程命令行完成。
用cat命令直接拼接
这是最常用、最轻量的方法,适合纯文本文件(.txt、.log、.md、.sh等),且不修改原始文件。
第一步:打开终端,进入存放这些文本文件的目录,例如:cd ~/Documents/logs
第二步:执行拼接命令,将所有.txt文件按字母顺序合并为combined.txt:cat *.txt > combined.txt
注意:> 是覆盖写入,如果combined.txt已存在,内容会被清空重写。【务必确认目标文件名未被误用,否则原有内容将永久丢失】
第三步:用head -n 5 combined.txt快速查看前5行,验证是否成功拼接。
用cat按指定顺序合并特定文件
当文件名无规律、或需严格控制合并顺序时,不能依赖*.txt通配符,必须手动列出文件名。
方法一:逐个列出文件名,用空格分隔:cat file1.txt file3.txt backup.log > output.txt
方法二:把文件名写入临时列表文件,再用xargs调用:printf '%s\n' file_a.txt notes.md config.env | xargs cat > bundle.txt
用awk合并并添加分隔线
如果希望每个源文件内容之间有明显分隔(比如加一行=== file_a.txt ===),cat做不到,awk可以。
awk 'FNR==1{print "\n=== " FILENAME " ==="} {print}' file1.txt file2.txt > with_headers.txt
这行命令会在每个新文件开头插入带文件名的分隔行,并保留原内容换行。FNR是当前文件的行号,FILENAME是正在读取的文件名——这两个变量是awk内置的,写错会失效。
用zsh glob排序确保顺序准确
Mac默认终端用zsh,通配符*默认按ASCII码排序,但中文名或带数字的文件(如log1.txt、log10.txt)会排成log1→log10→log2,不符合直觉。解决方法是启用数字感知排序:
先启用扩展glob:setopt extended_glob
再用(#a1)修饰符强制按数值排序:cat log(#a1).txt > sorted.log
【匹配任意数字,(#a1)表示按数值升序排列,缺一不可】











