bash 函數取代目錄和子目錄中出現的所有文本

bash 函數取代目錄和子目錄中出現的所有文本

我發現(在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

在我的終端機中,沒有任何反應...文字未被替換。

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

答案1

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

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

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

相關內容