LoginSignup
8

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-10-18

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
  3. You can use dark theme
What you can do with signing up
8