bash 函数替换目录和子目录中出现的所有文本

bash 函数替换目录和子目录中出现的所有文本

我发现(在谷歌上)这个完美的工作行可以替换我的目录和子目录中所有文件中的每个出现的情况:

grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g'

效果很好。

但现在我尝试在我的bash_aliases文件中的函数中使用它,如下所示:

freplace() {
    grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g';
}

然而,当我打电话时

freplace previoustext newtext

在我的终端中,没有任何反应......文本未被替换。

知道为什么它不起作用吗?

答案1

如果要将参数传递给函数,则需要使用位置参数来获取它们。

freplace() {
    grep -lr "$1" | xargs sed -i "s/$1/$2/g"
}

请注意,它不适用于包含/sed 或其他特殊字符的字符串。

相关内容