如何将此命令转换为zsh函数

时间:2013-03-20 23:28:39

标签: zsh

这是我想要转换为zsh函数的命令,它执行全局搜索并替换字符串:

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

我试过了:

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

但它似乎不起作用。

1 个答案:

答案 0 :(得分:4)

明显的错误是错误的引用 - 一如既往。 '阻止shell扩展变量,这就是你想要的。请改用" - 也许你也想要sed的全局标志:

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

然而,这不是zsh - 时尚......以下是更短的,恕我直言更好阅读:

gr () {
    sed -i "s/$1/$2/g" **/*(.)
}
  • **以递归方式搜索,但不遵循符号链接(如果需要,请使用***
  • (.)将结果限制为普通文件