이거 허접한 질문인데 grep 명령에서

shamlock의 이미지

Quote:

$ grep register_netdev -R *.c
grep: *.c: 그런 파일이나 디렉토리가 없음

위와 같이 나옵니다.
서브 디렉까지 검사해서 *.c 파일들중에서 register_netdev 라는 글자가 있는 파일을 grep 하려고 합니다.
*.c 에 따옴표도 붙여봤는데
안되네요

근데

Quote:

$ grep register_netdev -R *

이 명령은 잘 되거든요

리눅스,배쉬환경인데요
왜 안되는 것인지 궁금하네요

Fe.head의 이미지

-R 다음에 디렉토리를 지정하는것 같습니다.

find . -name "*.c" -exec grep {} \;
하시면 되겠습니다.

find . -name "*.c" -exec grep -l {} \;
하시면 파일명만 나옵니다.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

raymundo의 이미지

-R 옵션이 recursive 하게 검색하라는 뜻이긴 하지만, 뒤에 파라메터가 *.c 라고 되어 있으니 *.c 가 먼저 쉘에서 치환되어서 들어가고, 그 치환된 대상 (a.c b.c c.c d.c 등등) 에 대해서만 적용되어서 그렇습니다.

만일 a.c 라는 이름의 디렉토리가 있으면 그 디렉토리 안은 들어갑니다. (이 경우는 그 디렉토리 안에 모든 문서 - .c로 끝나지 않는 - 를 다 검색하는군요)

좋은 하루 되세요!

shamlock의 이미지

아..두분 모두 감사합니다.

쉘에서 먼저 치환되는것이었군요
그래서 파일을 찾을수 없다는 메시지가 나온것이었네요

다시한번 man 페이지를 보니 아래와 같이 하면 되긴 하네요

Quote:

$ grep register --include "*.c" -R /test/src/

find 명령이나 --include 옵션이나 둘다 타이핑이 기네요 ㅎㅎ

@.@