ディレクトリ内のすべての.php
ファイルを再帰的にトラバースし、特定のテキストパターンの検索と置換を実行するシェルスクリプトを探しています。
検索パターンは非常に長い(5000文字を超える)ため、便宜上別のテキストファイルに保存される場合があります。また、スラッシュ文字が含まれています。
編集:私は最初の部分を理解したと思います:
find . -name "*.php"
しかし、どうすればそれらのファイルを検索して置き換えることができますか?
Sedとxargsの適切な組み合わせで簡単に実行できます。
find . -name "*.php" | xargs -n 1 echo
xargsの力を示します。
その後、サンプルファイルで、インプレース変更(-i)またはバックアップ変更(-i.bak)を使用して正規表現をテストできます。パターン/置換にすでにある場合は、他の文字を使用して「/」を置き換えることもできます。
最後に、次のようになります。
pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement`
find . -name "*.php" | xargs -n 1 sed -i -e 's|$pattern|$replacement|g'
試してください:
find . -name "*.php" -exec sed -i "s/$pattern/$replacement/g" {} \;
ここで、pattern
は検索するパターンであり、replacement
はそれを置き換えるテキストです。
sed
の-i
オプションは、ファイルを「インプレース」で編集します。編集する前にファイルのバックアップを作成する場合は、-i'.bak'
を使用します。
Perl -p -i -e 's/originalString/targetString/g' `find . -name '*' -type f`