2014年6月

功能: 批量读取指定目录下的子目录中的相同文件名的文件,然后替换某些内容.

使用时遭遇了一个错误,如下.

sed:-e 表达式 #1,字符 13:“s”的未知选项

经研究发现,原来替换的内容正好有一个/,而sed正好也用了/作为分隔符.所以,把sed中的/替换为别的符号就可以了,如下换成了@

#!/bin/sh
# *表示匹配任意目录
site_dir="site/*"
filename="header.html"
replace_content="xxx"
src_content=""
TFILE="/tmp/out.tmp.$$"
# 列出所有目录
dirs=$(ls -d $site_dir)
for dir in $dirs
do
header_file="$dir/$filename"
if [ -w $header_file ]; then
sed "s@$src_content@$replace_content@g" "$header_file" > $TFILE && mv $TFILE "$header_file"
else
echo "cannot write: $header_file"
fi
done