広告 bash

複数のファイルの文字列を一気に置換するスクリプト

複数のファイルの文字列を一気に置換したい場合にどうぞ。

使うシーンとしては、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オプションは大文字・小文字の区別をなくすものなので、不要であれば指定しないでください。

Sponsor Link

-bash