디렉토리를 지정하지 않고 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 /

두 번째 경우에는 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'

관련 정보