- 締切済み
find,grepの使い方
こんにちは SYSTEM V系のUNIXで 複数ファイルからaaaという文字列を含むファイルを 抽出し、さらにその中からbbbという文字列を含む ファイルを抽出するにはどうすればいいでしょうか? find,grep等を使えばできそうな気がするのですが 具体的にどう書けばいいか分かりません。 お分かりになる方、ご回答お願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- SherlockHolmes2
- ベストアンサー率40% (175/429)
ファイル名を検索するという前提でよろしいでしょうか? であれば、 ls -l | grep 'aaa' | grep 'bbb' でどうでしょうか。
- entree
- ベストアンサー率55% (405/735)
find dir -type f | xargs grep -l aaa | xargs grep -l bbb
- kmee
- ベストアンサー率55% (1857/3366)
find は、基本的に「式」を順番に評価して、真なら続けて次の式を評価していきます。 式のうち、 -exec は後に続くコマンドを実行し、その終了ステータスが「正常」なら真となります。現在のファイルは{}で、コマンドの終りは ; です。共にシェルの特殊文字なので、そのまま記述せず \{\} \; などとします。 grepには -q オプションというのがあって、パターンが見付かったどうかの終了ステータスを返すだけで、一致した行の表示などを行わないません。 これらを組合せると ・findでファイルを探す。 ・↑のファイルをgrepでaaaが含まれているか調べる ・↑が含まれていたら、grepでbbbが含まれているか調べる という流れができます。 find . -type f -exec grep -q aaa \{\} \; -exec grep -q bbb \{\} \; -print man find man grep とすると、他にも使えるオプションや例文が載っているので、読んでみることをお勧めします。