1. 程式人生 > >shell指令碼遍歷資料夾下及其子檔案下所有檔案,本且替換指定文字

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 .