grep + sed で何回おれはハマっているのだ

よくある話

特定のディレクトリ(プロジェクトのリポジトリルートとか)から一括して文字列を置換したいときは出てくる。で、grep したのを sed に食わせるというのが常套手段。

メモ

# とりあえずこれでやった
grep -l hoge **/*.html | xargs sed -i "s/hoge/moge/g"
# これでもいいかも
grep -lr hoge ./*.html | sed -i "s/hoge/moge/g"
# これはだめっぽい。 -e は標準出力にだすだけだったはず。 -s もそうだっけ?あれ?
grep -lr hoge ./*.html | sed -e "s/hoge/moge/g"

ポイントは grep したときに -l を渡すことでファイルを渡せるということ。これで20分くらいガリガリハマってた。