无效的命令代码,尽pipe逃脱了,使用sed
被迫为当前客户端使用CVS,并且远程仓库的地址被更改。 我可以find更改我的本地代码中的远程地址的唯一方法是recursionsearch和replace。
但是,我希望使用sed命令:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
我得到每个文件的错误:
sed: 1: ".//file/path ...": invalid command code .
我试图摆脱sed比赛/replace期间,但是这并没有解决任何问题。
如果你在OS X上,这可能与sed命令无关。 在sed
的OSX版本中, -i
选项需要一个extension
参数,所以您的命令实际上被parsing为extension
参数,文件path被解释为命令代码。
尝试显式地添加-e
参数并给''
作为参数到-i
:
find ./ -type f -exec sed -i '' -e "s/192.168.20.1/new.domain.com/" {} \;
看到这个
你只是忘了给-i
提供一个参数。 只要把-i
改成-i
-i ''
。
当然,这意味着你不希望你的文件被备份; 否则提供您select的扩展,如-i .bak
。
可能你的新域名包含/
? 如果是这样,请尝试使用除/
以外的分隔符,例如#
,
等等
find ./ -type f -exec sed -i 's#192.168.20.1#new.domain.com#' {} \;
用单引号而不是双引号括起s///
也是好事,以避免variablesreplace或任何其他意外的行为