다른 문자열 "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