unixの便利系コマンドを、すぐ忘れちゃうのでメモ。
たとえば、つくってるサイトのプロジェクト名が変わってしまったよ!というとき。
# project_aを含むファイルを、すべてproject_bに置き換えて保存
ag -l project_a | xargs sed -i '' -e 's/project_a/project_b/g'
-
agで、特定の語を含むファイルをリスト
- デフォルトの挙動では、マッチしたファイル名 + マッチした箇所 を出力してくれるので、
-lオプションつけて、ファイル名だけ吐くようにしてもらう -
findでがんばってもよいんだろうけど、いまどきagのほうが素直で速いでせう
-
xargs <コマンド>に対して、ファイルリストを入力で渡すと、渡したファイルリストをコマンドで処理してくれる -
sedを使って、正規表現(-eで指定)でテキスト置き換えができる
- 普通は、ファイル名を引数にとって置き換え後の内容を出力、という挙動
-
-i <バックアップ用拡張子名>で、置き換え後の内容を元のファイルに出力できる
sedの挙動は、環境によってはちょっと違うかも。
置き換えが正しくできているかどうか、git diffとかで確認できる状態にした上で実行しようね!