디렉토리의 모든 파일에서 텍스트 문자열을 검색하려고합니다 (하위 디렉토리 -r
는 아닙니다 . 옵션이 그렇게한다는 것을 알고 있지만 원하는 것은 아닙니다).
달리는
grep "string" /path/to/dir
이 작업을 수행 할 수 있어야한다고 읽었습니다. 그러나 오류가 발생합니다.
grep : dir : 디렉토리입니다
다음
grep
으로 여러 파일에서 실행 을 시도했습니다 .grep "string" .bashrc .bash_aliases
완벽하게 작동합니다.grep "string" .bash*
의도 한대로 작동합니다.grep "string" *
나에게 오류를 준다 :grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
오류 만 인쇄되고 일치하는 줄을 얻지 못합니다. -s
옵션을 사용해 보았지만 아무 소용이 없습니다.
그래서 내 질문 :
grep
(1)과 같이 디렉토리에서 사용할 수없는 이유는 무엇 입니까? 인터넷에서 많은 예를 보았습니다.
편집 : "디렉토리에서 grep 사용"이라고 말하면 "하위 디렉토리를 제외한 해당 디렉토리의 모든 파일에서 검색"을 의미합니다. 나는 이것이 파일 대신 디렉토리를 전달할 때 grep 이하는 일이라고 생각합니다. 내가 틀렸어?grep
(2)의 명령 동작을 설명하는 작업에 대해 설명 해주십시오 .
편집 : 좀 더 구체적으로 설명하겠습니다. 와일드 카드를 사용하여 여러 파일을 지정하여 작업 하거나 검색.bash*
하지 않는 작업을 검색하는 이유는 무엇 입니까?*
./*
하위 디렉토리가 아닌 디렉토리의 모든 파일을 어떻게 검색 할 수
grep
있습니까?
grep "string" .bash*
.
grep "string" * .* 2>/dev/null
또는grep -s "string" * .*
*
로빙이라고 하는 쉘 확장 와일드 카드에 의존하고 있습니다. 글 로빙에는.bashrc
표준 과 같은 점으로 시작하는 파일 이름이 포함되지 않습니다 . 셸 옵션을 설정하여 이러한 파일을 포함시킬 수 있지만 수행중인 작업을 모르는 경우 약간 혼란 스러울 수 있습니다. 글 로빙 이해에 대한 유용한