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
とかで確認できる状態にした上で実行しようね!