ディレクトリの中のファイルの文字を一括置換するワンライナー

はじめに

ディレクトリの中のファイルの文字を一括置換したい時がある。一括置換するワンライナーを紹介。

前提

変換元: github.com/hogehoge/src
変換先: git.sumito.com/hogehoge/src

ワンライナー

grep -rl github.com/hogehoge/src ./* | xargs perl -i -pe 's#github.com/hogehoge/src#git.sumito.com/hogehoge/src#g'

注意

grep の検索文字はエスケープしない。
sedの区切り文字は / (スラッシュ) で区切ることが一般的だが、他の文字で代用も可能。
特にディレクトリのような / (スラッシュ) が入る際は、他のものを今回は # (シャープ)を区切り文字とする。