今天测试一个替换一个目录下所有.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’’命令来代替。
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
| « 4 | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | |||