📁
Mac でフォルダ内にあるファイルの中身全ての文字列を一気に置換する
rg -l '置換前' ./* | env LC_ALL=C xargs sed -i.bak -e 's/置換前/置換後/g'
とすることで, そのフォルダ内にある全てのファイルの中身にある 置換前
という文字列が一度に 置換後
に置き換わる。
rg
とは何か?
ripgrep のこと。grep よりも高速であり, かつ, デフォルトで再帰的にファイルを探索してくれる。
Mac なら
brew install ripgrep
でインストールできる。
env LC_ALL=C
はなぜ必要か?
sed が .DS_Store
のようなバイナリを見なくなり, その結果 sed: RE error: illegal byte sequence
というエラーが表示されなくなるため。
*.bak
という謎のファイルが大量にできたが?
バックアップ用の元のファイルなので, 不要なら rm -r *.bak
(fish shell なら rm -r **.bak
)してください
Discussion