あまりによく使うのでメモ。
例
$ 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
行数を表示する。
#まとめ
複数ファイルをまとめて置換なんかも簡単にできる。
たまにしかしなくても忘れないようにしたい。