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

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

아래와 같이 와일드카드와 함께 grep을 사용하는 경우

grep -in github */*

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

grep: dir1/dir2: Is a directory

이러한 메시지를 표시하지 않으려면 어떻게 해야 합니까?

놀랍게도 해당 플래그를 사용하면 --exclude-dir작동하지 않습니다.

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

답변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사용찾다grep다음으로 파일 병합그램/무게/p파일 내에서:

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

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

관련 정보