被迫将CVS用于当前客户端并更改了远程仓库的地址.我可以找到更改本地代码中的远程地址的唯一方法是递归搜索和替换.
但是,使用sed命令我期望工作:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
我收到每个文件的错误:
sed: 1: ".//file/path ...": invalid command code .
我试图逃脱sed比赛/替换的时期,但这并没有解决任何问题.
dam*_*ois 416
如果您使用的是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/" {} \;
Run Code Online (Sandbox Code Playgroud)
看到这个.
Dmi*_*hin 34
在 OS X 上,没有什么能帮助糟糕的内置 sed 变得足够。解决办法是:
brew install gnu-sed
Run Code Online (Sandbox Code Playgroud)
然后使用 gsed 而不是 sed,它会按预期工作。
小智 6
只需向 -i 标志添加扩展名即可。这基本上会使用原始文件创建一个备份文件。
sed -i.bakup 's/linenumber/number/' ~/.vimrc
sed 将执行而不会出现错误