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

如何基于字符编码合并多个文本文件?

合并ISO编码TXT文件到all.txt的解决方案

我来帮你搞定这个问题!你已经用file -I *.txt | grep "charset=iso"筛选出了目标文件,接下来只需要两步:提取文件名、转码合并(推荐统一转成UTF-8避免乱码)。

方法一:自动识别具体ISO编码并转UTF-8合并

这个命令会自动识别每个文件的具体ISO子编码(比如iso-8859-1、iso-8859-15等),然后统一转成UTF-8追加到all.txt:

file -I *.txt | grep "charset=iso" | awk -F ': ' '{print $1}' | xargs -I {} iconv -f $(file -I {} | awk -F 'charset=' '{print $2}') -t utf-8 {} >> all.txt
  • 拆解各部分作用:
    • awk -F ': ' '{print $1}':从file -I的输出里提取纯文件名(去掉后面的编码描述)
    • xargs -I {}:把每个文件名传递给后续的iconv命令
    • iconv -f [原编码] -t utf-8 {}:将原文件转码为通用的UTF-8格式
    • >> all.txt:把转码后的内容追加到目标文件(如果想覆盖已有内容,用>代替>>)

方法二:已知统一为某类ISO编码(比如iso-8859-1)

如果你确定所有筛选出的文件都是同一种ISO编码(比如西欧常用的iso-8859-1),可以用更简洁的命令:

file -I *.txt | grep "charset=iso-8859-1" | awk -F ': ' '{print $1}' | xargs cat | iconv -f iso-8859-1 -t utf-8 > all.txt

这里先拼接所有文件内容,再统一转码,效率会稍高一些。

可选:不转码直接合并(不推荐)

如果不需要转码,只想直接合并原编码文件,可以用:

file -I *.txt | grep "charset=iso" | awk -F ': ' '{print $1}' | xargs cat >> all.txt

但这样合并后的文件编码是混合状态,打开时可能需要手动切换编码才能正常显示,所以更推荐转成统一编码的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:23