• 締切
  • すぐに回答を!

find,grepの使い方

  • 質問No.6841204
  • 閲覧数759
  • ありがとう数3
  • 回答数3

お礼率 78% (114/146)

こんにちは
SYSTEM V系のUNIXで
複数ファイルからaaaという文字列を含むファイルを
抽出し、さらにその中からbbbという文字列を含む
ファイルを抽出するにはどうすればいいでしょうか?
find,grep等を使えばできそうな気がするのですが
具体的にどう書けばいいか分かりません。
お分かりになる方、ご回答お願い致します。

回答 (全3件)

  • 回答No.3

ベストアンサー率 40% (175/429)

ファイル名を検索するという前提でよろしいでしょうか?

であれば、
ls -l | grep 'aaa' | grep 'bbb'
でどうでしょうか。
  • 回答No.2

ベストアンサー率 55% (405/735)

find dir -type f | xargs grep -l aaa | xargs grep -l bbb
  • 回答No.1

ベストアンサー率 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
とすると、他にも使えるオプションや例文が載っているので、読んでみることをお勧めします。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ