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

求助:MacOS终端将多文本文件合并为单表格(每文件一列)及报错解决

Mac终端合并大量TXT文件为表格(原生工具方案)

问题原因

你遇到的paste: Too many open files错误,是因为Mac默认限制每个进程最多打开256个文件描述符,当*.txt匹配的文件数量超过这个阈值时,paste无法同时打开所有文件,导致命令失败并生成空文件。

下面提供两种原生终端解决方案,均满足你的需求:每个文件对应一列、每行内容对应表格行、文件名按首字母排序。


方案一:临时提高文件描述符限制(适合文件数量非极端多的场景)

  1. 查看当前文件描述符限制:
    ulimit -n
    
  2. 临时调高限制(数值需大于你的TXT文件总数,示例设为2048):
    ulimit -n 2048
    

    注意:该调整仅在当前终端会话有效,关闭终端后会恢复默认值。

  3. 按首字母排序文件并执行合并:
    paste -d '	' $(ls -1 *.txt | sort) > merged.csv
    
    • ls -1 *.txt | sort:按文件名首字母排序并输出每个文件名
    • -d ' ':用制表符作为列分隔符(Numbers/Excel可直接识别;若需逗号分隔,可替换为-d ',',但需确保文本内容不含逗号)

方案二:逐步合并文件(适合文件数量极多、调高限制仍无效的场景)

此方法每次仅合并两个文件,彻底避开打开文件数量限制:

  1. 生成按首字母排序的文件列表:
    ls -1 *.txt | sort > file_list.txt
    
  2. 初始化合并文件(取第一个文件的全部内容):
    cp $(head -1 file_list.txt) merged_temp.csv
    
  3. 循环合并剩余文件:
    tail -n +2 file_list.txt | while read filename; do
      paste -d '	' merged_temp.csv "$filename" > merged_temp_new.csv
      mv merged_temp_new.csv merged_temp.csv
    done
    
  4. 生成最终文件并清理临时文件:
    mv merged_temp.csv merged.csv
    rm file_list.txt
    

验证结果

合并后的merged.csv可直接用Numbers打开,每一列对应一个TXT文件,行内容与原文件一一对应,列顺序按文件名首字母排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:03:33