shell 篩選目錄下的特定編碼型別檔案

2021-06-23 04:22:35 字數 765 閱讀 2059

最近需要做乙個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。

Python中刪除特定目錄下的檔案

widnows中的指令碼不好用,所以投向python,用python協助工作,很好 import os,sys from stat import import shutil delpathname urelease def walktree top,callback for f in os.list...

遍歷指定目錄下的所有特定檔案

import os 遍歷資料夾 def walkfile file for root,dirs,files in os.walk file root 表示當前正在訪問的資料夾路徑 dirs 表示該資料夾下的子目錄名list files 表示該資料夾下的檔案list 遍歷檔案 for f in fil...

shell程式設計 遍歷目錄下的檔案

假定目錄text下有如下檔案 目錄 dir 1 dir 2 dir 3 檔案 text 1 text 2 遍歷目錄下所有的檔案是目錄還是檔案 if if型別 bin sh for file in do if test f file then echo file 是檔案 fiif test d fil...