!["모드 1"을 포함하는 파일에서만 Grep "모드 2"를 사용하십시오.](https://linux55.com/image/157143/%22%EB%AA%A8%EB%93%9C%201%22%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%EB%A7%8C%20Grep%20%22%EB%AA%A8%EB%93%9C%202%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
다른 문자열 "pattern 2"가 포함된 파일에서만 "pattern 1"을 검색하려고 합니다.
예를 들어
A.txt 모드 1 ... 모드 2
B.txt 모드 Z ... 모드 2
이 예에서는 A.txt에서 패턴 1과 일치하는 파일을 필터링한 다음 A.txt에서만 패턴 2가 나타나는지 검색하겠습니다.
아래에서 시도했지만 작동하지 않습니다.
grep -rl "모드 1". -exec grep -또는 "모드 2" +
참고: 일부 파일 경로에는 공백이 포함되어 있습니다.
답변1
다음으로 파이프할 수 있습니다 xargs
.
grep -rlZ "Pattern 1" | xargs -0 grep -l "Pattern 2"
또는 다음을 사용 find
하고 grep -q
+ grep -l
:
find . -type f \
-exec grep -q "Pattern 1" {} \; \
-exec grep -l "Pattern 2" {} +
이 옵션은 각 파일을 호출 하는 대신 여러 파일을 한 번에 호출 xargs
하므로 성능이 더 좋을 수 있습니다 .grep
find
grep