find로 A패턴은 include하고 B패턴을 exclude하고싶습니다.

drawhan의 이미지

find ./ -name "*log*" | xargs grep patten_A | xargs grep -v patten_B 로 둘중 하나가 맞을경우가 다 찾아지네요 AND로 조회할려고 하면 어떻게 해야 하나요?

shint의 이미지

grep에서 -i 를 하면 되지 않을까요?
Ignore case distinctions in both the PATTERN and the input files. 라고 하네요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

drawhan의 이미지

밑에분들 도움으로 해결했씁니다.

답변 감ㅅㅏ합니다

인생유람의 이미지

~.abc는 빼고 ~.def만 찾기는 이렇게 합니다.

find . -not \( -name "*.abc" \) -name "*.def" -type f -exec ls -l {} \;

drawhan의 이미지

파일명은 아니었고 파일내용검색이었습니다. 그 부분을 변화시키면 될듯 한데 적용하기에 제 지식이 부족합니다 ㅜㅜ

답변 감사합니다.

익명_사용자의 이미지

awk를 사용하세요.

find -name "*log*" | awk '/pattern_A/ { if( $0 !~ /pattern_B/ ) print }'

regular expression으로 원하시는것 마음껏 넣으세요. 여기서 pattern_A가 include하고 싶은 패턴이고
pattern_B가 exclude하고 싶은 패턴입니다.

쉽게 풀어드리자면,

#1. pattern_A와 매치되는지 검사. 매치된다면, goto #2. 매치안되면, 그냥 해당라인은 스킵하고 다시 #1
#2. pattern_B와 검사되는지 검사. 매치된다면, 해당라인은 스킵하고, 다시 #1. 매치안된다면 해당라인을 출력

굳이 regular expression안쓰시고
if( $0 == "abc" ) 같이 스트링 전체 비교도 가능합니다.

drawhan의 이미지

많은 도움이 되었습니다.

garam111의 이미지

find ./ -name "*log*" | xargs grep patten_A | grep -v patten_B

===================================
행동할 때 열정은 자라난다.

drawhan의 이미지

부족한 저의 지식을 채워주셔서 감사합니다.

drawhan의 이미지

부족한 저의 지식을 채워주셔서 감사합니다.

drawhan의 이미지

많은 도움이 되었습니다.