shell指令碼遍歷資料夾下及其子檔案下所有檔案,本且替換指定文字
今天寫了一個需求,在linux上,對一個資料夾下的所有檔案中,指定的文字內容進行替換,比如
把 www.baidu.com 替換成 www.google.com
1.先熟悉幾個linux命令
(1)新建資料夾 : mkdir 資料夾名
(2)新建檔案:touch 檔名
(3)刪除檔案: rm 檔名
(4)刪除資料夾:rm -rf 資料夾名 (刪除資料夾內所有內容)
(5)檢視檔案內容:cat 檔名
(6)給指令碼檔案增加許可權 chmod u+x file
2.shell指令碼
#這是shell檔案必須帶的頭
#! /bin/bash
#寫一個函式,呼叫的時候不用帶括號 function r(){
#for迴圈 這個``是esc下面的,意思是呼叫系統命令;$1指的是傳進去函式裡的第一變數 for file in `ls $1` do
#shell的語法一定要注意空格,不寫空格是會報錯的;if的語法和java不一樣,一定要注意
#這裡的判斷是判斷是否為目錄 if [ -d $1"/"$file ] then
#我這裡的兩個判斷是我需要排除對這兩個目錄的遍歷 if [ $file == "node_modules" ] then echo $file"此目錄排除,不替換" elif [ $file == "dist" ] then echo $file"此目錄排除,不替換" else
#用一種遞迴的方法來遍歷子目錄 echo $1"/"$file"為目錄" r $1"/"$file fi else if [ $file == "replaceField.sh" ] then echo $file"此檔案為本檔案,不替換" else
#替換檔案裡的bp.datacastle.cn為bp.inedcn.com echo $1"/"$file "為檔案" find -name $file | xargs perl -pi -e 's|bp.datacastle.cn|bp.inedcn.com|g' fi fi done } r .