複数のファイルの文字列を一気に置換したい場合にどうぞ。
使うシーンとしては、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
オプションは大文字・小文字の区別をなくすものなので、不要であれば指定しないでください。