You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GitHub分支中多个文本文件合并为单个汇总TXT文件

多文本文件批量合并解决方案

问题根因

你使用的git merge-file是Git专属的三向合并工具,仅支持传入3个文件参数(基准版本、当前版本、待合并版本),不支持批量合并多个独立文本文件的需求。传入通配符./txt/*.txt时,程序只会识别首尾两个有效文件参数,因此最终只能保留单个文件的内容。

可行解决方案

适配你GitHub定时任务的场景,直接使用Shell原生命令即可完成合并,无需额外依赖:

方案1:全量覆盖合并(推荐,适合每日全量更新抓取文件的场景)

每次合并时清空原有汇总文件,将./txt目录下所有txt文件的内容全量写入./all.txt,避免历史冗余内容:

# 直接合并所有txt内容到all.txt,无额外分隔
cat ./txt/*.txt > ./all.txt

排序规则调整:

  • 如需按文件修改时间从新到旧排序合并,可使用命令:cat $(ls -t ./txt/*.txt) > ./all.txt
  • 如需按文件修改时间从旧到新排序合并,可使用命令:cat $(ls -tr ./txt/*.txt) > ./all.txt

如果需要区分不同文件的内容,可加入分隔标记:

# 先清空原有文件
> ./all.txt
# 遍历所有txt文件依次追加,自动添加文件标识分隔线
for txt_file in ./txt/*.txt; do
  # 跳过目录,只处理文件
  [ -f "$txt_file" ] || continue
  # 写入文件内容
  cat "$txt_file" >> ./all.txt
  # 写入分隔线,标注当前文件名称
  echo -e "\n\n=== 以下为文件【${txt_file}】的内容 ===" >> ./all.txt
done

方案2:增量追加合并

如果需要保留./all.txt的历史汇总内容,仅追加本次更新的txt文件内容,将上述命令中的输出符号从>改为>>即可:

cat ./txt/*.txt >> ./all.txt

可选优化:内容去重

如果抓取的txt文件存在大量重复内容,可在合并后新增去重步骤:

sort ./all.txt | uniq > ./all.tmp && mv ./all.tmp ./all.txt

GitHub Actions适配说明

上述所有命令均为Ubuntu系统原生支持的Shell指令,无需额外安装软件,直接写入你定时任务的run配置项即可正常执行。
如果抓取的txt存在非UTF-8编码的乱码问题,可在遍历写入时新增编码转换逻辑,示例:

# 自动将GBK编码文件转为UTF-8写入
iconv -f GBK -t UTF-8 "$txt_file" >> ./all.txt

内容的提问来源于stack exchange,提问作者Bitsbb01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:45:03