![디렉토리를 지정하지 않고 Grep 명령 사용 [닫기]](https://linux55.com/image/85156/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%EC%A7%80%EC%A0%95%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20Grep%20%EB%AA%85%EB%A0%B9%20%EC%82%AC%EC%9A%A9%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
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'