código de comando inválido., a pesar de los períodos de escape, usando sed

Estar obligado a usar CVS para un cliente actual y cambiar la dirección para el repository remoto. La única forma en que puedo encontrar para cambiar la dirección remota en mi código local es buscar y reemplazar recursivamente.

Sin embargo, con el comando sed espero trabajar:

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

Me sale un error por cada archivo:

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

Intenté escapar de los períodos en el emparejamiento / reemplazo sed pero eso no soluciona nada.

Si está en un OS X, probablemente esto no tiene nada que ver con el comando sed. En la versión OSX de sed , la opción -i espera un argumento de extension para que su comando se analice como el argumento de extension y la ruta del archivo se interprete como el código de comando.

Intente agregar el argumento -e explícitamente y dando '' como argumento a -i :

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

Mira esto

Simplemente olvidaste proporcionar un argumento a -i . Solo cambia -i a -i '' .

Por supuesto, eso significa que no desea que sus archivos sean respaldados; de lo contrario, proporcione la extensión de su elección, como -i .bak .

Probablemente su nuevo dominio contenga / ? Si es así, intente usar un separador que no sea / in sed , por ejemplo, # , etc.

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

También sería bueno incluir s/// en comillas simples en lugar de comillas dobles para evitar la sustitución de variables o cualquier otro comportamiento inesperado