Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

fnobi
面白法人のテクニカルディレクター 兼 作曲家 兼 ドルヲタ ⌨️ http://github.com/fnobi 🎼 http://soundcloud.com/fnobi
http://fnobi.com/
kayac
古都鎌倉から新しい技術と面白いサービスを、次々にリリースする面白法人カヤックのフロントエンジニアチーム
http://www.kayac.com
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした