grep: 디렉토리를 제외하는 방법은 무엇입니까?

grep: 디렉토리를 제외하는 방법은 무엇입니까?

다음과 같이 와일드카드와 함께 grep을 사용할 때

grep -in github */*

각 디렉토리에 대해 grep다음과 같은 많은 메시지가 표시됩니다.

grep: dir1/dir2: Is a directory

이러한 메시지를 표시하지 않는 방법은 무엇입니까?

--exclude-dir놀랍게도 플래그를 사용하는 것이 작동하지 않습니다.

저는 grep (BSD grep) 2.5.1-FreeBSDMacOS에서 사용하고 있습니다.

답변1

-d skipgrep 건너뛰기 디렉터리를 만듭니다.

grep -in -d github 건너뛰기/

에 따르면이 MaxOS 매뉴얼 페이지해당 옵션은 MacOS grep에서 작동합니다. 이것이 MacOS grep에서 작동하지 않는 것으로 판명되면 설치할 수 있습니다Homebrew MacOS 패키지 관리자그런 다음 Homebrew를 사용하여 설치하십시오.grep의 GNU 버전, GNU grep이 지원하기 때문입니다 -d skip(이 경우 환경 변수에서 GNU grep이 포함된 디렉터리를 첫 번째로 만들어야 합니다 PATH).

답변2

사용 find대상찾다파일 grepg/re/p파일 내에서:

find . -mindepth 2 -maxdepth 2 -type f -exec grep -in github {} \;

이름에는 각 도구의 목적에 대한 큰 단서가 있습니다 :-).

관련 정보