"모드 1"을 포함하는 파일에서만 Grep "모드 2"를 사용하십시오.

"모드 1"을 포함하는 파일에서만 Grep "모드 2"를 사용하십시오.

다른 문자열 "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하므로 성능이 더 좋을 수 있습니다 .grepfindgrep

관련 정보