こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

すべてのファイルに対してgrepをかける方法を教えてください。

/(ルート)配下にあるすべてのディレクトリ(サブディレクトリ)配下のファイルに対して、'test'という文字列が入っているかどうかを調べたいと思っています。

サブディレクトリは何階層にもなっており、存在するすべてのファイルに対して検索をかけたいと思っています。

以上のような場合にどのようにgrepを使用すればよいのでしょうか?

投稿日時 - 2007-01-12 22:06:25

QNo.2661868

すぐに回答ほしいです

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

コメントが付かないようなので・・・

> ためしてみたところ
> ?
> と表示され、

行末のセミコロン(;)を忘れていませんか?
僕のを見やすいようにすべて全角で書くと以下になります。

find / -type f -exec grep test {} /dev/null ¥;

これを実際には半角で入力してください。

投稿日時 - 2007-01-13 08:50:24

補足

すみません ; 抜けてました。。。
ご指摘ありがとうございます。

投稿日時 - 2007-01-15 10:31:18

お礼

回答ありがとうございます。
ind / -type f -exec grep test {} /dev/null ¥;

にて確認がとれました。

投稿日時 - 2007-01-15 13:33:21

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

#4最終行訂正
誤:(ls -R / | grep -v / | exec test /dev/null の方がいいかな)
正:(ls -R / | grep -v / | exec grep test /dev/null の方がいいかな)

肝心の grep が落ちてました・・・

投稿日時 - 2007-01-13 09:11:04

ANo.4

grep の再帰オプション (-r)やfindを使う以外の方法では
ls の再帰オプション (-R) を使って、
ls -R / | exec grep test /dev/null
のような手もあるかと思います。
(ls -R / | grep -v / | exec test /dev/null の方がいいかな)

投稿日時 - 2007-01-13 09:09:18

お礼

回答ありがとうございます。

ls -Rを使う手もあるのですね。

今回はfindが使えたのでfindで実行しました。

投稿日時 - 2007-01-15 13:31:39

ANo.2

こっちの方がいいかな?
find / -type f -exec grep test {} /dev/null \;

-type fでファイルだけをgrep対象にします。
grepはファイル名が1つだけだと行頭にファイル名を表示しないので/dev/nullを指定して見た目上2つのファイルにします。
また、全ファイルへのアクセス権利のあるユーザー(rootがベスト)で実行しないとパーミッションエラーになるので注意してください。

投稿日時 - 2007-01-12 22:30:34

補足

回答ありがとうございます。
コマンドは実行でき、echo $?で0が帰ってきています。

が、本当にできたのか・・・というのが何かに残るようにできないでしょうか。

投稿日時 - 2007-01-15 10:29:47

お礼

必ずひっかかる文字列にてコマンドを実行し、
コマンドの信頼性の確認が取れました。

回答ありがとうございます。

投稿日時 - 2007-01-15 13:34:09

ANo.1

検索にヒットしないファイル名も全て表示されてしまいますが、とりあえず。

find / -print -exec grep test {} \;

投稿日時 - 2007-01-12 22:21:20

補足

回答ありがとうございます。
ためしてみたところ

?

と表示され、エンターキーをおしたら

「find: 文が正しくありません」
と表示されてしまいました・・
?が表示されたときに何か入力するのでしょうか?

投稿日時 - 2007-01-12 22:29:48

あなたにオススメの質問