• ベストアンサー

find結果で文字列検索?

RedHatLinux7.2です。 シェルコマンドで複数のテキストファイルからある文字列を含むファイルだけリストアップしたいのですが、文字列検索の対象となるテキストファイルが色々なディレクトリにまたがっている場合はどうやってやればよいでしょうか? 多分findで抽出したファイルパスをgrepに渡せばいいんでしょうけどパイプとか?がまだ不勉強ですぐにわかりません。 初歩的なことだと思いますがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#6581
noname#6581
回答No.4

#2です。 間違えました。 {} を付け忘れました。 正しくは次です。 find . -name '*.txt' -print -exec grep 'hoge' {} \;

その他の回答 (4)

  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.5

findの場合execオプションの使うのが 一般的だと思いますが別解として find . -name '*.txt' | xargs grep "hogehoge" これでもOKです。 xargsはfindに限らず標準出力された結果にたいして コマンドを実行できるので便利です。

pirozhki
質問者

お礼

ありがとうございます。grep -r も含めると3通り覚えられました。ほかのみなさんもありがとうございました。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

別解: あるディレクトリ以下を全部探す場合には grep -r でO.K.です.

pirozhki
質問者

お礼

ありがとうございます。これはこれで役にたちそうです。

noname#6581
noname#6581
回答No.2

カレントディレクトリ以下にある .txt ふぁいるから hoge を検索するには次のようにします。 find . -name '*.txt' -print -exec grep 'hoge' \;

  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.1

findコマンドのexecオプションを使えば、findの結果に対してコマンドを実行できます。

関連するQ&A