首页/系统/Linux 运维命令速查/场景:批量检测并转换文件编码
本包目录(613 条)
文件与目录76 条
文本处理77 条
网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

场景:批量检测并转换文件编码

老系统导出 GBK/GB18030 文本批量转 UTF-8:file -i 探测 → iconv 转换 → 换行归位,最后抽样复核。

Linux 运维命令速查系统更新于 2026-10-12
场景旧编码文件批量转 UTF-8
组合file -i + iconv + dos2unix

探测与转换

探测与转换
file -i data/*.txt
for f in data/*.txt; do
  iconv -f GB18030 -t UTF-8 "$f" > "$f.utf8" && mv "$f.utf8" "$f"
done
file -i data/*.txt   # 复核

换行统一

换行统一
find data -name '*.txt' -exec dos2unix -k {} +
转换前先整目录备份(cp -a data data.bak);转换后抽查中文是否乱码、行数是否一致。

易错点

  • file -i 只是启发式猜测:纯 ASCII 会报 us-ascii,样本小的文件可能误判编码
  • iconv 遇到非法字节直接中断(set -e 下循环会停),先写临时文件成功再 mv

数据来源与参考

  • man 1 iconv
  • man 1 file

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌