ディレクトリとサブディレクトリのすべてのテキストを置き換える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または他の特殊文字を含む文字列では機能しません。

関連情報