ディレクトリ配下のファイル内の特定の文字列を再起的に置換したいことがよくあります。
grep
と sed
を使っても良いですが今回は ripgrep と sd コマンドを組み合わせて一括置換します。
ripgrep
sd
例
置換する
Apple
=> Google
に書き換えたい場合
> rg 'Apple' -l | xargs sd 'Apple' 'Google'
短く書けるので覚えられる!
置換する(grep, sed)
同じことをgrep, sedを使ってやるとこんな感じになります。
> grep -l 'Apple' ./* | xargs sed -i -e 's/Apple/Google/g'
すぐ忘れるので毎回置換方法をググってしまう...。
本題
名前空間を変更した時に一括置換
App\UseCase\HogeHoge
から App\UseCase\Foo\Bar
に
移動した場合
> SEARCH='use App\\UseCase\\HogeHoge'
> REPLACE='use App\\UseCase\\Foo\\Bar'
> rg $SEARCH -l | xargs sd $SEARCH $REPLACE
名前空間は長くなりがちなので、変数作っていれておくといいかも。
\
は特殊文字なのでエスケープする。