특정 문구가 포함되지 않은 파일을 검색하고 나열하는 방법 [중복]

특정 문구가 포함되지 않은 파일을 검색하고 나열하는 방법 [중복]

저는 약 1000개의 입력 파일에 대해 동일한 작업을 실행하고 있습니다. 그 중 약 10%는 실패하지만 이를 확인하는 유일한 방법은 출력 파일을 스크롤하여 선언되었는지 확인하는 것입니다 . 시간을 절약하려면 명령을 completed without error사용하는 방법이 있습니다.grep

  • oxxxxx출력 파일(이름이 지정된)로만 디렉터리에서 구체적으로 검색합니다.
  • 해당 문구가 포함되지 않은 분들을 위해 completed without error,
  • oxxxx터미널 창에 이러한 파일을 나열합니다.

감사합니다!

답변1

사용GNU grep-L확장하다:

grep -L 'completed without error' o*

-L, --file이 일치하지 않습니다.

일반 출력을 억제합니다. 대신 일반적으로 인쇄되지 않는 각 입력 파일의 이름을 인쇄합니다. 검색은 첫 번째 일치에서 중지됩니다.

GNU grep이 없는 경우:

for f in o*; do grep -q "completed without error" "$f" || printf "%s\n" "$f"; done

답변2

grep -R <pattern> -L *

-R      recursively search
-L      files without match    

예:

 touch $(seq 1 100)  # create 100 files
 echo "testing" > 28
 echo "testing" > 32
 echo "testing" > 10
 echo "testing" > 15
 echo "testing" > 95
 echo "testing" > 72
 echo "testing" > 34
 echo "testing" > 25 # eight files with pattern
 $ grep -l test *|wc -l  # files that contains pattern
   8
 $ grep -L test *|wc -l  # files that doesn't contain pattern
  92

관련 정보