複数のファイルの文字列を一気に置換したい場合にどうぞ。
使うシーンとしては、htmlとかphpにベタ書きの文字列をガッと修正したいときなどでしょうか。
#!/bin/bash
for fname in `find /DIR/ -name "*html" -o -name "*php" | sort`
do if grep -i pattern $fname > /dev/null; then
sed -i -e "s/pattern/new_pattern/g" $fname
fi
done
簡単な説明
指定したディレクトリ以下にあるhtmlファイルとphpファイルに
patternという文字列があればnew_patternという文字列に置き換える。
というシロモノでございます。
簡単な説明
-name "*html" -o -name "*php"の部分を-type fとしてやると全てのファイルがgrepの対象となります。- grepの
-iオプションは大文字・小文字の区別をなくすものなので、不要であれば指定しないでください。