
我發現(在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 或其他特殊字元的字串。