9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?