--exclude-dir 플래그와 함께 grep을 사용하여 여러 디렉토리를 제외


16

grepOSX에서 사용하는 단어에 대해 Ruby on Rails 애플리케이션을 검색 중이며 특정 패턴과 일치하는 디렉토리를 제외하고 싶습니다.

다음 명령을 사용하고 있습니다.

grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset'

이 명령은 내가 생각했던 것을하지 않습니다. 다음은 내가 작동 한다고 생각한 방법 입니다.

  • i- 대소 문자를 구분하지 않는 검색
  • n- 패턴이있는 인쇄 라인 번호
  • R- 재귀 적으로 검색
  • w- 전체 단어 만 원합니다. 즉 "direct"와 일치하지만 "directory"와는 일치하지 않습니다.
  • -E- 확장 정규식 사용
  • 'direct'- 일치시키고 싶은 정규식
  • . -현재 디렉토리에서 검색
  • --exclude-dir -E 'git | log | asset'- git 또는 log 또는 asset과 일치하는 디렉토리를 제외합니다.

제외 디렉토리와 관련하여 명령은 여전히 './git''./log' 디렉토리 와 './app/assets' 에서 검색합니다.

분명히 기본 지식이 부족하지만 그것이 무엇인지 모르겠습니다.

답변:


16

해당 옵션에 대한 매뉴얼 페이지 설명은 오해의 소지가 있습니다 ... regex 에서와 같이 패턴이 아닌 globs 와 같은 패턴 입니다. 페이지 당 :info

--exclude-dir = GLOB

GLOB 패턴과 일치하는 이름 접미 부가있는 명령 행 디렉토리를 건너 뛰십시오. 재귀 적으로 검색 할 때 기본 이름이 GLOB와 일치하는 서브 디렉토리를 건너 뛰십시오. GLOB에서 중복 슬래시를 무시하십시오.

따라서 귀하의 경우 다음을 실행할 수 있습니다.

grep -inRw -E 'direct' . --exclude-dir={git,log,assets}

라는 이름의 디렉토리를 제외 할 git, log그리고 assets또는 예

grep -inRw -E 'direct' . --exclude-dir={\*git,asset\*}

로 끝나 git거나로 시작되는 디렉토리 이름을 제외 asset합니다.


매우 흥미로운. 나는 글로브가 무엇인지 찾아봐야한다고 생각합니다.
Steven L.

미안하지만 이것들 중 아무것도 작동하지 않는 것 같습니다. 이 버전의 grep : grep (BSD grep) 2.5.1-FreeBSD를 사용한다고 말하면 도움이 되겠습니까?
Steven L.

bsd grep ( freebsd.org/cgi/man.cgi?query=grep&sektion=&n=1 ) 설명서를 읽고 있으며 --exclude-dir에 대한 언급이 없기 때문에 혼란 에 빠졌습니다. 우우.
Steven L.

2
확인-이제 문제가 보입니다. Apple 시스템에서만 사용되는 grep의 수정 된 버전이어야합니다. Mac OS X를 사용하고 있습니다. 혼란을 드려 죄송합니다. 스택 교환에 게시 할 수있는 다른 포럼이 있다고 확신합니다.
Steven L.

@ user245185 BSD 또는 OSX를 사용하고 있습니까? 둘 다 여기 주제에 관한 것이지만 질문을 편집하고 사용중인 OS를 알려주십시오. 표준 도구의 동작은 발견하는 구현마다 다릅니다.
terdon

8

--exclude-dir이해하지 못합니다 |.

그러나 --exclude-dir제외하려는 각 디렉토리마다 하나씩 여러 번 지정하여 동일한 효과를 얻을 수 있습니다 .

grep -inRw -E --exclude-dir 'asset' --exclude-dir 'git' --exclude-dir 'log' 'direct'

그것은 나를 위해 일했다. 홈 디렉토리를 제외하고 싶었지만와 같은 다른 옵션으로는 작동하지 않았습니다 --exclude-dir={home}. 나는 타이핑 할 때 일했다--exclude-dir 'home'
Mubin Icyer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.