LoginSignup
72
66

More than 5 years have passed since last update.

ag (The Silver Searcher) コマンド覚え書き

Last updated at Posted at 2016-04-25

今更ですが、ag(The Silver Searcher) を積極的に使っていこうと思っています。
主に自分用のメモをここに書き溜めていくつもりです。

ag をよく知らない人のために

ag は Perl 製の ack と似たツールですが、高速に動作するのが特長です。
ディレクトリを再帰的に検索でき、便利な機能・オプションが色々あります。

Mac, Linux, BSD, Windows 各 OS に対応しています。

インストールガイド等は 公式の README をご参照下さい。

コマンド・フォーマット

ag --help より。

ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
# 例
ag -i foo /bar/

コマンドオプション

※今は一部しか載せていません。随時加筆予定。

出力オプション

option 説明
-l, --files-with-matches マッチしたファイル名のみ表示

検索オプション

option 説明
-G, --file-search-regex PATTERN 正規表現で対象ファイルを絞り込み
--ignore(-dir) PATTERN マッチするファイル・ディレクトリを対象から除外
--hidden 隠しファイルを検索対象にする
-i, --ignore-case 大文字小文字の違いを無視
-s, --case-sensitive 大文字小文字の違いを考慮する
-S, --smart-case 検索 PATTERN に大文字が含まれない限り、大文字小文字の違いを無視する(デフォルト)

使用例

特定ディレクトリ以下のファイル群に対する文字列の一括置換操作

# lib/ 以下の *.rb を検索して foo => bar に一括置換
ag -l -G '\.rb$' foo lib/ | xargs perl -pi -e 's/foo/bar/g'

上のような操作は、今まで find ... | xargs perl -pi -e '...' とやっていました1が、ag だとマッチするファイルだけに対象が絞り込まれるので、少し安心感がありますね。

ハマりどころ

デフォルトで --smart-case が有効

何度か「あれっ?」となったのですが、オプションの項に載せている通り、デフォルトでは検索文字列に大文字を含まない限り、大文字小文字の違いを無視してくれるようです。

きっと、気を利かせてくれているのでしょう。

おわりに

随時更新予定です。

参考

脚注

72
66
0

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
72
66