Bash

bash 函式替換目錄和子目錄中出現的每一個文本

  • August 12, 2020

我(在 Google 上)找到了這條完美的工作行來替換我的目錄和子目錄中所有文件中的每一次出現:

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

在我的終端中,沒有任何反應…… 文本不會被替換。

知道為什麼它不起作用嗎?

如果要將參數傳遞給函式,則需要使用位置參數來獲取它們。

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

請注意,它不適用於包含/sed 特殊字元的字元串或其他字元。

引用自:https://unix.stackexchange.com/questions/604112