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

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


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

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

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

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

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

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


#!/bin/bash
function 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_sum
done
}
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"
    exit
fi
INIT_LOG_PATH=$4
INIT_RE_A="$2"
INIT_RE_B="$3"
INIT_PATH=$1
INIT_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 $5
if [ ! "$INIT_X_CODE" = "-Xcode" ]; then
    xfile $INIT_PATH
fi
printf "\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  "--------------------------------------------------------------------"  

                     



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值