Being forced to use CVS for a current client and the address changed for the remote repo. The only way I can find to change the remote address in my local code is a recursive search and replace.
However, with the sed command I'd expect to work:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
I get an error for every file:
sed: 1: ".//file/path ...": invalid command code .
I've tried to escape the periods in the sed match/replacement but that doesn't solve anything.
Simply add an extension to the -i flag. This basically creates a backup file with the original file.
sed -i.bakup 's/linenumber/number/' ~/.vimrc
sed will execute without the error
You simply forgot to supply an argument to -i
. Just change -i
to -i ''
.
Of course that means you don't want your files to be backed up; otherwise supply your extension of choice, like -i .bak
.
Probably your new domain contain /
? If so, try using separator other than /
in sed
, e.g. #
, ,
etc.
find ./ -type f -exec sed -i 's#192.168.20.1#new.domain.com#' {} \;
It would also be good to enclose s///
in single quote rather than double quote to avoid variable substitution or any other unexpected behaviour
On OS X nothing helps poor builtin sed to become adequate. The solution is:
brew install gnu-sed
And then use gsed instead of sed, which will just work as expected.
Source: Stackoverflow.com