[regex] grep (foo를 포함하지 않는 매치 라인)을 이용한 네거티브 매칭
이 명령의 구문을 해결하려고 노력했습니다.
grep ! error_log | find /home/foo/public_html/ -mmin -60
또는:
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
이름이 지정된 파일을 제외하고 수정 된 모든 파일을 확인해야합니다 error_log
.
나는 그것에 대해 읽었 지만 하나의 not
정규식 패턴 만 발견했습니다 .
답변
grep -v
당신의 친구입니다:
grep --help | grep invert
-v, –invert-match 일치하지 않는 행을 선택합니다
또한 관련 항목 -L
()을 확인하십시오 -l
.
일치하지 않는 -L, –files- 만 일치하지 않는 파일 이름 만 인쇄
답변
awk
보다 복잡한 방식으로보다 명확한 검사를 수행 할 수 있으므로 다음과 같은 목적으로 도 사용할 수 있습니다 .
포함하지 않는 줄 foo
:
awk '!/foo/'
어느 쪽도 포함하지 않는 라인 foo
도 bar
:
awk '!/foo/ && !/bar/'
어느 쪽도 포함하지 않는 라인 foo
도 bar
하나 포함 foo2
또는 bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
등등.
답변
귀하의 경우에는 아마도 grep을 사용하고 싶지 않지만 대신 find 명령에 부정적인 조항을 추가하십시오.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
이름에 와일드 카드를 포함 시키려면 접미사가 .log 인 파일을 제외 시키려면 와일드 카드를 이스케이프 처리해야합니다.
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log