shell 筛选目录下的特定编码类型文件

来源:互联网 发布:窃听噐在淘宝叫什么 编辑:程序博客网 时间:2024/06/05 19:06

引言

最近需要做一个php网页汉化的任务,找到了一个老版本的汉化版,老版本的汉化所有的包含中文的php也没的编码格式都是UTF-8,为了不一个一个的去找老版本的包含中文的php页面,想要写一个shell 脚本筛选出所有包含中文呢的php文件。

实现

脚本的任务很简单,写起来也很简单:递归遍历目录下的所有文件,查看文件格式,如果是UTF-8则筛选出来,不是UTF-8则过滤掉。代码如下所示
#/bin/bashutf8_re="*UTF-8*"path=./for File in `find $path`dofiletype=`file $File`echo $filetype|grep -E $utf8_re>/dev/null 2>&1if [ $? -eq 0 ];thenecho $filetypefi  done


下面分析一下。
首先定义了两个变量,一个用来进行匹配文件编码格式,一个用来指定路径。
这里用find命令来递归遍历目录下的所有文件,一开始想使用ls -R命令,但是在shell编写过程中发现,这个命令不是很好用,不容易取到子目下下的文件,而且ls -R同样会返回目录,还需要额外添加一个if [-f $file]的判断,而find命令在没有规则的情况下直接返回所有文件;
得到所有文件后,用file命令得到文件的编码格式;
得到编码格式后用正则表达式进行判断,判断文件格式是否为UTF-8。

0 0