LoginSignup
72
69

More than 5 years have passed since last update.

コマンドラインで複数ファイルから特定の文字列を検索する

Last updated at Posted at 2014-05-15

あまりによく使うのでメモ。

$ find . -type f -name "*.js" | xargs grep 'keyword' -n 

結果

カレントディレクトリからのファイルのパス:行数 検索文字列を含む行

./app/assets/javascripts/form.js:20:            var keyword = "opp";
./app/assets/javascripts/form.js:211:           var result = keyword + "test";

↑適当に書いたけどこんな感じに出力される。

解説

find

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230777/
ファイルやディレクトリを検索するコマンド

.

カレントディレクトリ配下全てを指定している。
もちろんpathをしぼることも可能。

-type f

指定したファイル・タイプを検索する。
cはdがディレクトリを、fが通常ファイルを、lがシンボリック・リンクを表す。
今回は通常ファイルなのでfを指定。

-name "*.js"

ファイル名がpatternと同じファイルを検索する。ワイルド・カードを用いることができる。
例ではjsファイルのみに絞っている。

 |

前のコマンドの出力結果を後ろのコマンドに渡すやつ。
読み方がわかんないんで誰か教えてください。

# 追記(2014/05/16)

パイプですね。
_hecoさんありがとうございます。
http://ja.wikipedia.org/wiki/%E3%83%91%E3%82%A4%E3%83%97_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29

xargs

http://itpro.nikkeibp.co.jp/article/COLUMN/20140331/547143/
指定されたコマンドと初期引数に、標準入力から読み込んだ引数をつけてコマンドラインを生成し、実行するコマンド。
コマンドが指定されなかった場合はechoに送られる。

grep

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230786/
文字列を検索するコマンド

'keyword'

検索したい文字列

-n

行数を表示する。

まとめ

複数ファイルをまとめて置換なんかも簡単にできる。
たまにしかしなくても忘れないようにしたい。

72
69
4

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
69