Linux 系统批量替换某文件夹下以htm/html结尾的文件内的关键词

服务器 · 2021-01-28 ·

由于广告法的推行,网站中有时需要批量替换某个不符合广告法的关键词

对于静态生成的网站,一个个替换有时替换不完全并且麻烦,这里我们通过bash命令,批量替换html文件内的关键词,当然别忘了手动替换下数据库内的关键词。

在root目录下,新建replace.sh

#!/bin/bash
#替换某个目录下的文件的内容
fileDir=$1
sourceStr=$2
targetStr=$3
echo "fileDir="$fileDir
echo "sourceStr="$sourceStr
echo "targetStr="$targetStr

# 遍历当前目录下的所有html/htm文件
function getAllFiles(){
    fileList=`ls $1`
    for filename in $fileList
    do
        if [ -f $filename ]; then
            ## 只处理html文件和htm文件
            if [ "${filename##*.}"x = "html"x ]||[ "${filename##*.}"x = "htm"x ]; then
            ## 进行字符替换
                echo "文件名="$filename
                sed -i "s/$sourceStr/$targetStr/g" $filename
            fi
        else
        #   echo "目录下的文件名="$filename
            getAllFiles $1"/"$filename
        fi
    done 
}

getAllFiles $1

调用

./replace.sh /www/wwwroot 最好 比较好

最后执行完可以通过以下命令,查找是否有漏网之鱼

cd /www/wwwroot
grep -rl "最好" ./
%