加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux批量修改文件编码格式(包含子目录)

发布时间:2022-09-23 16:08:13 所属栏目:Linux 来源:
导读:  项目工程文件编码格式有utf-8,也有gb2312,在通过Source Insight 4.0打开文件只能设置一种默认编码格式UTF-8/Windows ANSI/GB2312,不能自动识别文件本身的编码格式,这就导致总有一部分文件打开后,注释是乱码
  项目工程文件编码格式有utf-8,也有gb2312,在通过Source Insight 4.0打开文件只能设置一种默认编码格式UTF-8/Windows ANSI/GB2312,不能自动识别文件本身的编码格式,这就导致总有一部分文件打开后,注释是乱码,影响阅读和使用。
 
  为解决该问题,寻找批量文件编码格式转换工具(包括子目录)。
 
  1.安装enca
 
  enca是Linux下的文件编码转换工具。
 
  enca的安装请参考:
 
  查看是否安装enca:
 
  enca --version
  已安装,会显示enca版本, 
 
  未安装:
 
  2.通过shell脚本批量修改编码格式
 
  安装enca后,通过 enca -x utf-8 * 可将本目录下所有文件编码格式修改为utf-8格式linux编码,但是它不能遍历子文件夹,故要跟find命令配合。
 
  上面这段代码可以搜索当前目录下及所有子目录的cpp和h格式的文件。
 
  utf-8编码格式的转换脚本如下:
 
  cli="find . -type f \( "
  for arg in ${@:1:$#-1}
  do
   cli="$cli -iname \*.$arg -o "
  done
  cli="$cli -iname \*.${@: -1} \)"
  #echo $cli
  PRE_IFS=$IFS
  IFS=$'\n'
  for i in `eval $cli`
  do
   enca -x utf-8 $i
  done
  IFS=$PRE_IFS
  echo "ok!"
  通过chmod赋予toUTF8.sh运行权限,然后把它拷贝进~/bin 文件夹中,这样这条命令就在环境变量里了,可以随处使用。
 
  chmod 777 toUTF8.sh
  若需修改编码格式为其他格式,只需替换utf-8即可,可选项有GB2312,
 
  3.脚本使用示范
 
  使用示范:进入待处理文件夹的根目录,输入参数 cpp h c,即把根目录内所有cpp、h、c文件改成了utf-8字符集。脚本写成了可以接受指定文本格式的形式,这样比较灵活和通用。
 
  好了文件统一转换为UTF-8编码格式了。
 
  此时通过Source Insight 4.0以utf-8为默认编码格式打开,则注释不在乱码;
 
  以后有遇到这种事,就能直接用它来处理就完事了。
 
  4.enca查看文件编码格式
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!