一行Linux命令查找所有非UTF-8编码的文件,再一行命令,都转换成UTF-8

开始之前,请先安装enca这个软件包。enca是Linux等系统下用来查看文件编码和转换文件编码的工具。

下面一行Linux命令能够查找当前目录下所有文件中,哪些文件不是UTF-8编码。我对文件加了些限制,用find命令时候,排除了所有目录下的.svn目录,且只查找后缀为.php的文件。

命令1

jw@~/sqlite>
find . ! -iregex '.*\.svn.*' -type f -name '*.php' -exec bash -c "enca -L zh_CN {}|grep GB2312 > /dev/null && echo {}" \;
./sqlite_utility.php
./sqlite_result.php
./sqlite_forge.php
./sqlite_driver.php

既然找到了这些非UTF8编码的文件,接下来再用一条命令将他们都转换成UTF8编码

命令2

jw@~/sqlite>
find . ! -iregex '.*\.svn.*' -type f -name '*.php' -exec bash -c "enca -L zh_CN {}  | grep GB2312 >/dev/null && enconv -L zh_CN -x UTF-8 {}" \;

当你用命令2 全部转换完成后,如果你期待命令1的输出为空,那么你就错了。实际上英语字母的utf8编码和ASCII编码是一样的。当一个全是英文字母的文件用UTF8 w/o BOM编码保存,那么enca会识别他是一个ACSII编码的文件。所以,你猜到了,命令2做了一些无用功:)

  • http://www.nbseoer.com/ 宁波网站设计

    enca很好用的,我也在用啊,不过没有博主用的那么厉害啊。

  • http://www.wsprite.com 站长工具

    博主的文章很不错,我是站长工具-站长精灵的作者,一款专业的SEO工具软件(可以帮您提高博客的流量),想跟您交换个链接,不知可否

  • neilxp

    好的啊

  • http://www.wsprite.com 站长工具

    博主,兔年快乐!

  • http://www.noblerbaby.com baby car seats

    这个很好用,我也用过,博主支持你一下。。。

  • http://www.ningbo-powercord.com power cord

    都是代码啊,要好好学习一下了

  • http://www.bolts-jdf.com/ Hex Bolts

    哇,这个命令好强大。

  • http://www.bolts-jdf.com Carriage Bolts

    PHP代码,看不大来。。。不熟悉啊

  • http://www.zhiyuanpy.com 宁波停车棚

    好厉害,都是一段代码搞定

  • http://xny.chenhua.cn/ 随风飘荡

    博主的文章很棒,支持! http://xny.chenhua.cn/

  • http://www.honglongnb.com/ 虾青素

    这个就是用来查看编程的么

  • 宁波注册公司

    还是不怎么会