LoginSignup
9

More than 5 years have passed since last update.

posted at

updated at

複数のファイルに対して、特定の語を一気に置き換え

unixの便利系コマンドを、すぐ忘れちゃうのでメモ。

たとえば、つくってるサイトのプロジェクト名が変わってしまったよ!というとき。

# project_aを含むファイルを、すべてproject_bに置き換えて保存
ag -l project_a | xargs sed -i '' -e 's/project_a/project_b/g'
  1. agで、特定の語を含むファイルをリスト

    • デフォルトの挙動では、マッチしたファイル名 + マッチした箇所 を出力してくれるので、-lオプションつけて、ファイル名だけ吐くようにしてもらう
    • findでがんばってもよいんだろうけど、いまどきagのほうが素直で速いでせう
  2. xargs <コマンド>に対して、ファイルリストを入力で渡すと、渡したファイルリストをコマンドで処理してくれる

  3. sedを使って、正規表現(-eで指定)でテキスト置き換えができる

    • 普通は、ファイル名を引数にとって置き換え後の内容を出力、という挙動
    • -i <バックアップ用拡張子名> で、置き換え後の内容を元のファイルに出力できる

sedの挙動は、環境によってはちょっと違うかも。

置き換えが正しくできているかどうか、git diffとかで確認できる状態にした上で実行しようね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9