Natural

           

          [demo]sed字符串替換

          找出Z:\A、Z:\B目錄下所有內(nèi)容帶“APPLE“的文件,把"APPLE"替換成"ORANGE",并輸出到Z:\C相應(yīng)的目錄下

            1 #!/bin/sh
            2 # Auto replace the files' content and copy them to the specified directory.
            3 
            4 SEARCH_WORD='APPLE'
            5 REPLACE_WORD='ORANGE'
            6 
            7 SRC_DIR_ARRAY=(
            8 'Z:/A'
            9 'Z:/B'
           10 )
           11 
           12 OUTPUT='Z:/C'
           13 
           14 global_lastDir_pre=''
           15 declare -i count=0
           16 
           17 function checkFileDir
           18 {
           19     local fileNameWithPath=$1
           20     local dirPre=${fileNameWithPath%/*}
           21     local tempPath=${OUTPUT}/${dirPre}
           22     global_lastOutput=$OUTPUT/$fileNameWithPath
           23     
           24     if [ ! -"$tempPath" ]
           25     then
           26         tar -cf - "$fileNameWithPath" | tar -"$OUTPUT" -xf -
           27         rm -"$global_lastOutput"
           28     fi
           29 
           30 }
           31 
           32 function replaceFile
           33 {
           34     local fileNameWithPath=${1#*/}
           35     local regix=$2
           36     local thisDir_pre=${fileNameWithPath%/*
           37     
           38     if [ "$thisDir_pre" = "$global_lastDir_pre" ]
           39     then
           40         sed "$regix" "$fileNameWithPath" > "$global_lastOutput"
           41         continue
           42     fi
           43 
           44     checkFileDir "$fileNameWithPath"
           45     global_lastDir_pre=$thisDir_pre
           46 
           47     sed "$regix" "$fileNameWithPath" > "$global_lastOutput"
           48 }
           49 
           50 function echoNote
           51 {
           52     echo "Wrong directory detected. Please check it !"
           53 }
           54 
           55 function init
           56 {
           57     for src_dir in ${SRC_DIR_ARRAY[*]}
           58     do
           59         if [ ! -"$src_dir" ]
           60         then
           61             echoNote
           62             echo "SRC_DIR_ARRAY: '$src_dir'"
           63             exit
           64         fi
           65     done
           66     
           67     if [ ! -"$OUTPUT" ]
           68     then
           69         echoNote
           70         echo "OUTPUT: '$OUTPUT'"
           71         exit
           72     fi
           73     
           74     rm -rf "$OUTPUT"
           75     mkdir "$OUTPUT"
           76 
           77 }
           78 
           79 
           80 echo -"----------------------------BEGIN--------------------------------\n"
           81 
           82 init
           83 for src_dir in ${SRC_DIR_ARRAY[*]}
           84 do
           85 
           86     cd "$src_dir"
           87     list=`find . -type f | xargs grep -"$SEARCH_WORD"`
           88     #list=`find . -type f | xargs grep -il "$SEARCH_WORD"`    # ignore case
           89     for line in $list
           90     do
           91         grep -Hn "$SEARCH_WORD" "$line" >> "$OUTPUT/log.txt"
           92         #grep -iHn "$SEARCH_WORD" "$line" >> "$OUTPUT/log.txt"    # ignore case
           93         count=count+1
           94         echo $line
           95         replaceFile "$line" "s/$SEARCH_WORD/$REPLACE_WORD/g"
           96         #replaceFile "$line" "s/$SEARCH_WORD/$REPLACE_WORD/Ig"    # ignore case
           97     done
           98 
           99 done
          100 
          101 echo -"\n----------summary----------"
          102 echo "total files size: $count"
          103 
          104 echo "----------------------------END--------------------------------"
          105 

          posted on 2012-02-21 15:51 此號(hào)已被刪 閱讀(348) 評論(0)  編輯  收藏 所屬分類: Linux

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 海晏县| 平邑县| 凌源市| 青铜峡市| 特克斯县| 卓尼县| 江川县| 广河县| 辽阳市| 资溪县| 湘潭市| 乡宁县| 浦江县| 寿阳县| 蛟河市| 星子县| 阿拉善右旗| 花莲县| 托克逊县| 武清区| 唐山市| 闻喜县| 特克斯县| 威远县| 花垣县| 利津县| 丹东市| 汾西县| 岗巴县| 涟源市| 东城区| 化州市| 彰化县| 宣城市| 尼勒克县| 饶河县| 柘城县| 玉龙| 邯郸县| 长兴县| 商城县|