shell 篩選目錄下的特定編碼類型文件

引言

最近需要做一個php網頁漢化的任務,找到了一個老版本的漢化版,老版本的漢化所有的包含中文的php也沒的編碼格式都是UTF-8,爲了不一個一個的去找老版本的包含中文的php頁面,想要寫一個shell 腳本篩選出所有包含中文呢的php文件。

實現

腳本的任務很簡單,寫起來也很簡單:遞歸遍歷目錄下的所有文件,查看文件格式,如果是UTF-8則篩選出來,不是UTF-8則過濾掉。代碼如下所示
#/bin/bash

utf8_re="*UTF-8*"
path=./
for File in `find $path`
	do
	filetype=`file $File`
	echo $filetype|grep -E $utf8_re>/dev/null 2>&1
	if [ $? -eq 0 ];then
		echo $filetype
fi  
done


下面分析一下。
首先定義了兩個變量,一個用來進行匹配文件編碼格式,一個用來指定路徑。
這裏用find命令來遞歸遍歷目錄下的所有文件,一開始想使用ls -R命令,但是在shell編寫過程中發現,這個命令不是很好用,不容易取到子目下下的文件,而且ls -R同樣會返 回目錄,還需要額外添加一個if [-f $file]的判斷,而find命令在沒有規則的情況下直接返回所有文件;
得到所有文件後,用file命令得到文件的編碼格式;
得到編碼格式後用正則表達式進行判斷,判斷文件格式是否爲UTF-8。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章