Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@fnobi

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

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

8
Help us understand the problem. What is going on with this article?
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
fnobi
面白法人のテクニカルディレクター 兼 作曲家 兼 ドルヲタ ⌨️ http://github.com/fnobi 🎼 http://soundcloud.com/fnobi
kayac
古都鎌倉から新しい技術と面白いサービスを、次々にリリースする面白法人カヤックのフロントエンジニアチーム

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?