패턴/문자열과 일치하는 N개 미만의 줄을 포함하는 파일 나열

패턴/문자열과 일치하는 N개 미만의 줄을 포함하는 파일 나열

편집하다

아래 나열된 조건을 달성하기 위해 GREP과 FIND를 모두 사용하는 명령을 찾고 있습니다.

각 로그 파일에는 두 번 나타나는 문자열 패턴 "226 Transfer Complete"가 포함되어 있습니다. 일부 파일에서는 한 번만 나타나거나 0으로 나타납니다. 0번과 1번 발생하는 파일 이름 목록을 캡처해야 합니다. 다음 명령은 파일에서 검색 패턴을 찾을 수 없는 경우에만 작동합니다(즉, 개수가 "0"인 경우에만 작동함).

find . -type f -name "*.log" ! -exec grep -q "226 Transfer complete." {} \; - print

저는 grep 버전(GNU grep) 2.20을 사용하고 있습니다. 또한 결과를 텍스트 파일로 캡처해야 합니다.

답변1

grep -lR '226 Transfer complete\.' --include='*.log'

답변2

이를 사용 awk하여 발생 횟수를 계산하고 횟수가 다음보다 작은 경우 파일 이름을 인쇄할 수 있습니다 n.

find . -type f -name \*.log -exec awk -vn=2 'BEGIN{c=0};
/PATTERN/{++c; if (c==n){exit}};END{if (c<n){print FILENAME}}' {} \;

일치하는 항목 이 발견되면 n(이 경우 2) 계산이 중지됩니다.

관련 정보