日期:2014-05-17  浏览次数:20530 次

批量规模修改网站的css
    前一阵子,玉树地震。上面有要求,需要我们把所有的网站都变灰,其实这个简单,大家都会,只需要在css里,加一句话即可。
html{ filter: gray;}


    但是,我们的网站放在N台服务器上,每个服务器上又有N十多个子网站。难道要一个一个修改css?这种事情当然是要交给机器来做。于是,我提议可以写一个脚本,来批量替换,于是,我的主管写了一个脚本,在这里和大家分享一下。
#!/bin/bash

site_path=$1

site_url=$2

for i in `find $site_path -name "*.css" |grep -v "/admin/"`
do
sed -e '1iaaa' $i |sed -e '1r a.txt' |sed -e '1d' >c.txt;mv  -f  c.txt  $i
eval url=`echo $i|sed "s#${site_path}##"`
echo $site_url$url
done

脚本的目的是循环查找css文件,当然把后台过滤掉,所以使用了 grep -v "/admin/",如果,你想过滤其他的目录,可以再这里添加或修改。之后,在查找到的css文件头,利用sed来合并一个文件。a.txt 当然 a.txt中只有一句话,就是:
html{ filter: gray;}

之后,输入命令 ./css.sh test http://www.xxxx.com/ >> test.txt
你的服务器下,所有的css都被修改了,当然,网站也就变灰了。

当然,我们只需要纪年一天,第二天,还要恢复,同样,也需要一个删除那句话的脚本,如下:
#!/bin/bash

site_path=$1

site_url=$2

for i in `find $site_path -name "*.css"  |grep -v "/admin/"`
do
	test_str=`sed -n 1p $i`
	if [ "$test_str" = 'html{ filter: gray;}' ]; then
		sed -e '1,2d' $i >c.txt;mv  -f  c.txt  $i
		eval url=`echo $i|sed "s#${site_path}##"`
		echo $site_url$url
	fi
done


如此,这般,OK了,下次再有哪要地震(当然,我可没这么希望),仍然可以使用这个脚本。如果,大家有什么更好的方法,也可以交流一下。