文件内容及文件名替换Shell-linux

来源:互联网 发布:京东秒杀软件安卓版 编辑:程序博客网 时间:2024/05/01 20:56

由于工作需要,需要对源码进行统一修改,因而做一这样一个小脚本,斩且把它命名为Xmen.sh


将下面脚本保存为:Xmen.sh

使用方式:./Xmen.sh 工作目录 被替换文本 替换后文本  日志存放路径

举例: ./Xmen.sh /src AAA BBB /log

作用:1.文件名修改:/src下文件名为AAA被修改成BBB

            2.内容替换:/src下文本中出现AAA处都将替换成BBB

            3.修改日志存放在:/log下中


#!/bin/bashfunction xfile(){for file in ` ls $1`;do    if [ -d $1"/"$file ];then        local dirPath=${1}        local dirName=${file}        xfile $1"/"$file        `echo $dirName |grep -q $INIT_RE_A`        if [ $? -eq 0 ]                then                        log ${dirPath}"/"${dirName}            mv -f ${dirPath}"/"${dirName} ${dirPath}"/"${dirName/${INIT_RE_A}/${INIT_RE_B}}                fi    else        local path=$1        local name=$file            `echo $name |grep -q $INIT_RE_A`        if [ $? -eq 0 ]        then                #echo "include"            log  ${path}"/"${name}            mv -f ${path}"/"${name} ${path}"/"${name/${INIT_RE_A}/${INIT_RE_B}}        fi    fi    _X_F_count=`expr $_X_F_count + 1`    nbar $_X_F_count $_X_F_sumdone}function xcode(){    if [ ! -d $INIT_LOG_PATH ];then                mkdir -p $INIT_LOG_PATH        fi    local para="s/"$1"/"$2"/g"    local fromStr=`echo "$1" | sed "s/ /_/g"`    local toStr=`echo "$2" | sed "s/ /_/g"`    local logfile=${INIT_LOG_PATH}"/text-"$fromStr"-"$toStr".log"    grep "$1" -rl $INIT_PATH >>$logfile    if [ $? -eq 0 ]        then           local counter=0        local sum=`cat $logfile |wc -l`        for i in `cat ${logfile}`        do            sed -i "$para" "$i"            counter=`expr $counter + 1`            nbar $counter $sum        done        #sed -i $para `grep $1 -rl $INIT_PATH`    else        local j=0        while [ $j -lt 101 ]        do                nbar $j  100                j=`expr $j + 1`        done    fi}function log(){    if [ ! -d $INIT_LOG_PATH ];then        mkdir -p $INIT_LOG_PATH    fi    echo $1 >> $INIT_LOG_PATH"/file-"${INIT_RE_A}"-"${INIT_RE_B}".log"} xbar(){        local counter=$1        local _PROCEC=$2        tput cup $_PROCEC 0        if [ $counter -eq 1 ];then                printf "["        fi        tput cup $_PROCEC $counter        printf "=>"        tput cup $_PROCEC 101        printf "]%d%%" $counter}nbar(){        local idx=$1        local sum=$2;        local counter=`echo "${idx}*100/${sum}" |bc`        #echo $counter        xbar $counter $_P}if [ $# -lt 4 ]; then    echo "Usage: $0 source-dir to-replace-string replacement log-path [-Xcode]"    echo ""    echo "For example:"    echo " $0 /source AAA BBB /log -Xcode"    exitfiINIT_LOG_PATH=$4INIT_RE_A="$2"INIT_RE_B="$3"INIT_PATH=$1INIT_X_CODE=$5_X_F_sum=`ls -lR $INIT_PATH|grep "^[-d]"|wc -l`_X_F_count=0 echo  "--------------------------------------------------------------------"     echo  "--------o-----o--o-------o--oooooooo--o-------o---------------------"      echo  "---------o---o---o-o---o-o--o---------o-o-----o---------------------"        echo  "----------o-o----o--o-o--o--o---------o--o----o---------------------"       echo  "-----------o-----o---o---o--oooooooo--o---o---o---------------------"       echo  "----------o-o----o-------o--o---------o----o--o---------------------"       echo  "---------o---o---o-------o--o---------o-----o-o---------------------"       echo  "--------o-----o--o-------o--oooooooo--o-------o---------------------"       echo  "--------------------------------------------------------------------"printf "\n"echo  "Rename file and directory:"_P=`tput cols`echo $5if [ ! "$INIT_X_CODE" = "-Xcode" ]; then    xfile $INIT_PATHfiprintf "\n"echo  "Replace text"_P=`tput cols`xcode "$INIT_RE_A" "$INIT_RE_B"printf "\n"echo  "Xmen has complete the task , bye bye !"printf "\n"echo  "--------------------------------------------------------------------"        echo  "---------@@@@@@@@@@-------------------------@-------@---------------"    echo  "---------@--------@-------------------------@-----@-----------------"    echo  "---------@--------@-------------------------@---@-------------------"    echo  "---------@--------@-------------------------@-@---------------------"    echo  "---------@--------@-------------------------@---@-------------------"    echo  "---------@--------@-------------------------@-----@-----------------"    echo  "---------@@@@@@@@@@-------------------------@-------@---------------"    echo  "--------------------------------------------------------------------"