More than 1 year has passed since last update.

Linuxのターミナルで作業しているとき、あるディレクトリ以下のファイルすべてについて一括置換したいなぁって思うときありますよね。
そのときのTips。

普通のやつ

find . -type f -print0 | xargs -0 sed -i -e 's/foo/bar/g'

Gitバージョン管理のリポジトリ

Linuxのとき

find を使うと .git ディレクトリも巻き込んでリポジトリをぶっ壊すので ls-files を使います。

git ls-files -z | xargs -0 sed -i -e 's/foo/bar/g'

Macのとき

-i オプションの後に空文字列をつけるのがポイント。じゃないとハマる。

git ls-files -z | xargs -0 sed -i '' -e 's/foo/bar/g'

また、 sed: RE error: illegal byte sequence エラーが出た時の対処は以下のようにします。

export LANG=C
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.