0

これは、文字列のグローバル検索と置換を行う zsh 関数に変換したいコマンドです。

find ./ -type f -exec sed -i 's/string1/string2/' {} \;

私は試した:

gr () {
    find ./ -type f -exec sed -i 's/$1/$2/' {} \;
}

しかし、うまくいかないようです。

4

1 に答える 1

4

明らかな誤りは、いつものように間違った引用です。'シェルが変数を展開するのを防ぎます。これはあなたが望むものです。"代わりに使用してください。おそらく、sed のグローバル フラグも必要です

gr () {
    find ./ -type f -exec sed -i "s/$1/$2/g" {} \;
}

ただし、これはあまりスタイリッシュではありませんzsh...以下は短く、IMHOの方が読みやすいです。

gr () {
    sed -i "s/$1/$2/g" **/*(.)
}
  • **再帰的に検索しますが、シンボリックリンクをたどりません (必要***に応じて使用してください)
  • (.)結果をプレーンファイルに制限する
于 2013-03-21T09:15:26.803 に答える