grep --include는 --exclude와 유사하게 작동합니다.

grep --include는 --exclude와 유사하게 작동합니다.

grep의 --include 옵션을 사용하려고 하는데 예상대로 작동하지 않습니다.

다음과 같은 단순화된 테스트를 고려해보세요.

설정

me@de31:~/tmp$ cat file.h
This is a .h file
me@de31:~/tmp$ cat file.c
This is a .c file

확인하다

me@de31:~/tmp$ grep "This is a" *
file.c:This is a .c file
file.h:This is a .h file

--include 사용

me@de31:~/tmp$ grep "This is a" * --include="*.c"
file.h:This is a .h file

me@de31:~/tmp$ grep "This is a" * --include="*.h"
file.c:This is a .c file

--exclude 사용

me@de31:~/tmp$ grep "This is a" * --exclude="*.c"
file.h:This is a .h file

me@de31:~/tmp$ grep "This is a" * --exclude="*.h"
file.c:This is a .c file

보시다시피 --include는 --exclude와 동일한 출력을 갖습니다. stackexchange의 또 다른 게시물에서는 "-r"이 필요하다고 주장하지만, 저도 시도해 보았으나 출력이 변경되지 않았습니다.

답변1

이건 일종의 버그인 것 같습니다. Ubuntu Launchpad에서 다음과 같은 잘못된 파일을 발견했습니다.--include는 --exclude와 동일한 효과를 갖습니다!.

내 Fedora 14 시스템의 예:

$ more file.*
::::::::::::::
file.c
::::::::::::::
This is a .c file

::::::::::::::
file.h
::::::::::::::
This is a .h file

포함하다

$ grep "This is a" * --include="*.c"
file.c:This is a .c file
$ grep "This is a" * --include="*.h"
file.h:This is a .h file

들어오지 못하게 하다

$ grep "This is a" * --exclude="*.c"
file.h:This is a .h file
$ grep "This is a" * --exclude="*.h"
file.c:This is a .c file

grep 버전

$ grep --version
grep (GNU grep) 2.8

관련 정보