ディレクトリを指定せずに Grep コマンドを使用する [閉じる]

ディレクトリを指定せずに Grep コマンドを使用する [閉じる]

grepディレクトリパスを指定せずにコマンドを使用できますか?

例:

$ sudo grep "filename" /

私もこれを試しました:

 sudo find / -type f grep -l "filename"

まだ運がありません。

LoadModuleデフォルトでは、Apache2設定ファイルで指定された場所を検索しています。私はそれがここにあると思ったが、/etc/apache2/apache2.confそうではなかった。

答え1

Grepは、ユーザーがファイル名またはファイル名のリストを提供することを期待しています。引数としてパスを使用しません。したがって、最初の試みは次のように書くことができます。

sudo grep searchstring /*

ルートディレクトリのすぐ下のすべてのファイルを検索します。 (ご希望の内容ではない場合があります。)

編集する:GNU grepは実際に再帰的に検索できるため、次のことができます。

sudo grep -r searchstring /

2番目のケースでは、findの仕組みを誤解しました。-typeあなたが探しているファイルの種類を知らせるためのパラメータが必要で、その後に「grep」を追加するだけでは何もしません。ただし、探しているすべてのファイルに対してコマンドを実行するように指示できます。このように:

sudo find / -type f -exec grep -l searchstring {} \;

{}「ファイル名」を意味し、\;「コマンドが完了しました」を意味します。

答え2

Jennyの答えは最も一般的でした。必要なものが見つかるはずです。

grep -r -i '^[[:space:]]*LoadModule' /etc/apache2

もっと賢く言えば、apache2ディレクトリ構造の外側の "include"ディレクティブを見つけて記録しておく必要があります。

これを行うには、開いているファイルのリストをインポートして、apache2ctl -t次のように構成を確認できます。

APACHE_HTTPD='ltrace -s4096 -e open@libapr* apache2' apache2ctl -t 2>&1 |
  cut -d\" -sf2 |
  grep -v /dev/ |
  sort -u |
  xargs -rd '\n' grep -i '^[[:space:]]*LoadModule'

関連情報