現在のクライアントにCVSの使用を強制され、リモートリポジトリのアドレスが変更された。ローカルコードでリモートアドレスを変更する唯一の方法は、再帰的な検索と置換です。
ただし、sedコマンドを使用すると、動作するはずです。
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
すべてのファイルでエラーが発生します。
sed: 1: ".//file/path ...": invalid command code .
私はsedマッチ/交換でピリオドをエスケープしようとしましたが、それは何も解決しません。
OS Xを使用している場合、これはおそらくsedコマンドとは関係ありません。 OSXバージョンのsed
では、-i
オプションはextension
引数を必要とするため、コマンドは実際にextension
引数として解析され、ファイルパスはコマンドコードとして解釈されます。
-e
引数を明示的に追加し、''
の引数として-i
を指定してみてください。
find ./ -type f -exec sed -i '' -e "s/192.168.20.1/new.domain.com/" {} \;
this を参照してください。
-i
に引数を指定するのを忘れただけです。 -i
を-i ''
に変更するだけです。
もちろん、ファイルをバックアップしたくないということです。それ以外の場合は、-i .bak
などの拡張機能を指定します。
おそらく、新しいドメインには/
が含まれていますか?その場合は、sed
で/
以外の区切り文字を使用してみてください。 #
、,
など.
find ./ -type f -exec sed -i 's#192.168.20.1#new.domain.com#' {} \;
変数の置換やその他の予期しない動作を避けるために、二重引用符ではなく単一引用符でs///
を囲むことも良いでしょう