1. ホーム
  2. bash

[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"

2022-02-07 07:56:40

質問

現在のクライアントでCVSを使わざるを得なくなり、リモートリポのアドレスが変更されました。私のローカルコードでリモートアドレスを変更する唯一の方法は、再帰的な検索と置換です。

しかし、sedコマンドだとうまくいくと思うのですが。

find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;

ファイルごとにエラーが発生します。

sed: 1: ".//file/path ...": invalid command code .

sedのmatch/replacementでピリオドをエスケープしてみましたが、何の解決にもなっていません。

どうすればいいですか?

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/" {} \;

参照 これ .