ディレクトリを再帰的に検索し、見つかったすべてのファイルで文字列 ( http://development:port/URIなど) を別の文字列 ( http://production:port/URIなど) に置き換える必要があります。誰でも助けることができますか?
そのスクリプトが変更したファイルを出力し、検索/置換パターンを入力パラメーターとして受け取ることができれば、はるかに良いでしょう。
よろしく。
ディレクトリを再帰的に検索し、見つかったすべてのファイルで文字列 ( http://development:port/URIなど) を別の文字列 ( http://production:port/URIなど) に置き換える必要があります。誰でも助けることができますか?
そのスクリプトが変更したファイルを出力し、検索/置換パターンを入力パラメーターとして受け取ることができれば、はるかに良いでしょう。
よろしく。
探す 。-タイプ f | xargs sed -is/pattern/replacement/g
これを試して:
find . -type f | xargs grep -l development | xargs perl -i.bak -p -e 's(http://development)(http://production)g'
もう少しフィードバックのある別のアプローチ:
find . -type f | while read file
do
grep development $file && echo "modifying $file" && perl -i.bak -p -e 's(http://development)(http://prodution)g' $file
done
お役に立てれば。
間接的な層から恩恵を受けるように思えます。(しかし、誰がそうしませんか?)
特殊な文字列を 1 か所だけにできると思います。実行時に構成設定を参照するか、ビルド時に正しい文字列でこれらのファイルを生成します。
動作中のSVN/CVSディレクトリ内で上記を試さないでください。.svn/.cvsにもパッチが適用されますが、これは間違いなくあなたが望むものではありません。たとえば、.svnの変更を回避するには、次を使用します。
find . -type f | fgrep -v .svn | xargs sed -i 's/pattern/replacement/g'
高度なグロビンで使用zsh
すると、1つのコマンドしか使用できません。例えば:
sed -i 's:pattern:target:g' ./**
HTH