文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>替换某个目录下所有文件中的某个字符串为另一个字符串

替换某个目录下所有文件中的某个字符串为另一个字符串

时间:2008-05-03  来源:剑心通明

使用方式如下:
frall.sh /work teststr testok
执行结果如下:
/work目录下所有文件(包括子目录下)中存在teststr字符串的位置,全部被testok字符串所替代.

代码:
#!/bin/sh

useage()
{
echo "useage:$0 dirname oldstr newstr"
echo "attantion:dirname must haven't oldstr!"
}

tf1=/tmp/.f.tmp1
tf2=/tmp/.f.tmp2
workdir=`pwd`
rm -f $tf1
rm -f $tf2

# do with /$2-xxx and /$2-xxx/$2-yyy
if [ $# -eq 0 ];then
        useage
        exit
fi

for dir in `find $1/* -type d`
do
        echo $dir | awk 'BEGIN {FS="/"} ;{print $NF}' | grep $2
        if [ $? = 0 ];then
                echo `echo $dir | wc -c ` $dir >> $tf1
        fi
done
sort -r -n $tf1 -o $tf2

while read LINE
do
        dir=`echo $LINE | cut -d " " -f 2`
        olddir=`echo $dir | awk 'BEGIN {FS="/"};{print $NF}'`
        newdir=`echo $olddir | sed s/$2/$3/g`
        cd $dir;cd ..
        mv $olddir $newdir
        cd $workdir
done < $tf2

for file in `find $1/* -type f`
do
grep $2 $file 1>2 2>/dev/null
  if [ $? = 0 ] && [ $file != $0 ]; then
#       echo "$file have $2 " >> /tmp/nnn
ed - $file << EO
g/$2/s/$2/$3/g
.
w
q
EO
fi
        newname=`echo $file | sed s/$2/$3/g`
        mv $file $newname
done
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载