今天测试一个替换一个目录下所有.htm文件的脚本。
replace.sh
#!/bin/bash
DIR=/home/tom/test/data
for f in $(ls $DIR/*.htm); do
TMP_FILE=$f.tmp
sed -e ’s/<table width=”100%” border=”0″ cellpadding=”0″
cellspacing=”0″>/<!–#include virtual=”\/test.html”
–>\n<table width=”100%” border=”0″ cellpadding=”0″
cellspacing=”0″>/g’ $f >> $TMP_FILE
mv $TMP_FILE $f
done
对于初学shell编程的同学来说有以下几点需要注意:
1. #!/bin/bash不能忘记写;
2.赋值号前后不能有空格;
3.变量$f取到的文件名是有可能会带路径的;
4.sed命令好像在替换以后不能自动保存到文件,所以需要重定向到临时文件,然后mv一下;
5.当中的/要转义,\n可以代表回车;
6.如果想递归遍历,不能用‘ls -R $DIR’直接来处理,目前想到的方法是用‘find $DIR | grep -F ‘.htm’’命令来代替。