• 締切済み

grepコマンドの使い方

下記のようなファイルがあるとします。 カレントディレクトリ /home から"hello"という文字列が含まれるテキストを grepしたい場合、コマンドはどのようにすればいいのでしょうか? 色々な方法があると思いますが、よろしくお願いします。 ---------------------------------------------------------------------- /home/hoge1/foo1.txt foo2.exe foo3.txt /home/hoge2/hogehoge2/foo4.txt foo5.exe /home/hoge3/hogehogehoge3/foo6.txt foo7.exe foo8.zip ----------------------------------------------------------------------

みんなの回答

  • estea
  • ベストアンサー率44% (39/87)
回答No.3

バイナリをはずすなら -I オプションが有効らしいです grep hello -r /home/ -I でいいですか?

参考URL:
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html
  • estea
  • ベストアンサー率44% (39/87)
回答No.2

> -d ACTION, --directories=ACTION > (中略) > ACTION が recurse なら、 grep は各ディレクトリ下の > すべてのファイルを再帰的に読み取ります。 > これは -r オプションと等価です。 らしいんで grep hello -r /home/ はどうなんだろう

参考URL:
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html
hiropon80
質問者

お礼

ご回答ありがとうございました。 こんな短いコマンドでできるとは思いませんでした。 しかし、例の *.exe にも "hello" が含まれると引っかかってしまいます。 パイプ等を使用すると複雑になるのでしょうか?

  • NNori
  • ベストアンサー率22% (377/1669)
回答No.1

grep は引数で指定されたファイルからしか検索できないので、 /home 以下のすべてのファイルを対象にgrep したいときは、 find と組み合わせるのはいかがでしょうか。 また、grep はファイルをひとつしか指定しないと検索した結果しか表示されなくファイル名がわからなくなってしまうので、grep の引数に-l をつけてファイル名を表示させた方がいいですね。 find /home -exec grep -l hello {};

hiropon80
質問者

お礼

ご回答ありがとうございました。 実行した結果エラーが表示されてしまいました。。。 ここはLinuxカテゴリですが、当方cygwinでした。 すみません。

関連するQ&A