3

ディレクトリを再帰的に検索し、見つかったすべてのファイルで文字列 ( http://development:port/URIなど) を別の文字列 ( http://production:port/URIなど) に置き換える必要があります。誰でも助けることができますか?

そのスクリプトが変更したファイルを出力し、検索/置換パターンを入力パラメーターとして受け取ることができれば、はるかに良いでしょう。

よろしく。

4

5 に答える 5

6

探す 。-タイプ f | xargs sed -is/pattern/replacement/g

于 2008-09-23T22:50:49.050 に答える
5

これを試して:

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

お役に立てれば。

于 2008-09-23T22:49:13.500 に答える
2

間接的な層から恩恵を受けるように思えます。(しかし、誰がそうしませんか?)

特殊な文字列を 1 か所だけにできると思います。実行時に構成設定を参照するか、ビルド時に正しい文字列でこれらのファイルを生成します。

于 2008-09-23T22:48:35.060 に答える
1

動作中のSVN/CVSディレクトリ内で上記を試さないでください。.svn/.cvsにもパッチが適用されますが、これは間違いなくあなたが望むものではありません。たとえば、.svnの変更を回避するには、次を使用します。

find . -type f | fgrep -v .svn | xargs sed -i 's/pattern/replacement/g'
于 2009-09-17T15:39:42.083 に答える
0

高度なグロビンで使用zshすると、1つのコマンドしか使用できません。例えば:

sed -i 's:pattern:target:g' ./**

HTH

于 2008-09-25T09:03:15.480 に答える