アプリ版:「スタンプのみでお礼する」機能のリリースについて

linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法を教えてください。
簡単な事なのかもしれませんが、コマンドから打つ場合、どのようにすればよいか、分かりません。
Windows の秀丸のgrepなら簡単に出来るのですが。。。
どなたか教えてくださいませ。。。

A 回答 (4件)

例えば


grep pattern `find あるディレクトリ -iname *.html`
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
できました。なのですが、私のやろうとした場合だと、find結果のファイルが多すぎて、grep を実行しようとするところでエラーになってしまいました。
なので、
find あるディレクトリ -iname "*.html" -exec grep -Hn pattern {} \;
としてみたら、うまくいきました。ありがとうございました。

お礼日時:2005/05/21 16:48

最近のgrepだと


grep pattern -r directory \*.html
でできるかも。

#1さんと類似の方法だと
find directory -name \*.html -print | xarfs grep pattern
見たいな手もあるかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私のlinuxだとダメでした。かなり古いのだと思います。。。

2個目に書いていただいたのは。。。
xarfs
というのは何なのでしょうか。。。回答の内容についていけてなくて、すみません。。。

お礼日時:2005/05/21 16:52

#2の訂正


・grep の-rオプションは使えないようです。
(さっき試したときはOKそうだったんですが、今確認すると、希望(*.html)以外のも引っかかってました。)
申し訳ない。

・xarfsじゃなくてxargsです。(ミスタイプを見落としてました。申し訳ない)
findで該当ファイルが大量に見つかったときに、適当な数に分割して、次のプログラム(grep) の引数にするプログラムです。
で、grepも
xargs grep pattern /dev/null
の方がよいかも。
(/dev/nullはおまじない。(findで見つかったファイルがひとつしかなかったときでも、確実にファイル名を表示させるため)。)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
いろいろなやりかたがあるみたいですね。
勉強してみます。

お礼日時:2005/10/12 16:57

grep pattern `find <Directory> ...`



とやっても、引数が多すぎる場合にエラーとなってしまう場合は、私はいつも以下のようにやっています。

find <Directory> ... | while read line; do echo "--> $line"; grep pattern $line; done
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
いろいろなやりかたがあるみたいですね。
勉強してみます。

お礼日時:2005/10/12 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!