0

这是我想翻译成 zsh 函数的命令,它对字符串进行全局搜索和替换:

find ./ -type f -exec sed -i 's/string1/string2/' {} \;

我试过:

gr () {
    find ./ -type f -exec sed -i 's/$1/$2/' {} \;
}

但这似乎不起作用。

4

1 回答 1

4

明显的错误是错误的引用——一如既往。'防止外壳扩展变量,这是您想要的。改为使用"-- 并且您可能还需要 sed 的全局标志:

gr () {
    find ./ -type f -exec sed -i "s/$1/$2/g" {} \;
}

但是,这不是很zsh时尚......以下内容更短,恕我直言,更好阅读:

gr () {
    sed -i "s/$1/$2/g" **/*(.)
}
  • **递归搜索,但不遵循符号链接(***如果需要,请使用)
  • (.)将结果限制为纯文件
于 2013-03-21T09:15:26.803 回答