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