답변:
grep -nr 'yourString*' .
끝에있는 점은 현재 디렉토리를 검색합니다. 각 매개 변수의 의미 :
-n Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r Recursively search subdirectories listed
. Directory for search (current directory)
grep -nr 'MobileAppSer*' .
( MobileAppServlet.java
또는 MobileAppServlet.class
또는 MobileAppServlet.txt
;을 찾을 'MobileAppASer*.*'
수 있지만 동일한 작업을 수행하는 다른 방법입니다.)
더 많은 매개 변수를 확인하려면 man grep 명령을 사용하십시오 .
grep -nr MobileAppSer* .
1에 대한 두 가지 가능성을 모두 고려해 봅시다. 현재 디렉토리에 MobileAppSer*
와일드 카드 패턴과 일치하는 3 개의 파일 ( named MobileAppServlet.java
,, MobileAppServlet.class
) 이 있다고 가정합니다 MobileAppServlet.txt
. 그런 다음 다음 grep
과 같이 호출됩니다 grep -nr MobileAppServlet.class MobileAppServlet.java MobileAppServlet.txt .
.. 이는 MobileAppServlet.java, MobileAppServlet.txt 파일 및 현재 디렉토리의 다른 위치에서 "MobileAppServlet.class"텍스트를 검색하는 것을 의미합니다. 사용자가 원하는 것은 아닙니다.
MobileAppSer*
와일드 카드 패턴과 일치하는 파일이없는 경우 grep
인수를있는 MobileAppSer*
그대로 수신하여 "MobileAppSe"텍스트를 찾은 다음 "r"이 0 번 이상 나타나는 텍스트로 검색합니다. 현재 디렉토리의 파일 내용에서 "MobileAppSe", "MobileAppSer", "MobileAppSerr", "MobileAppSerrr"등의 텍스트를 찾으려고 시도하십시오.
grep -nr string my_directory
추가 사항 : grep [options] string filename
Unix 계열 시스템에서 디렉토리는 일종의 파일이기 때문에 구문을 만족시킵니다 (Windows에서는 "파일"이라고하는 엔티티를 구체적으로 지칭하는 "일반 파일"이라는 용어가 있습니다).
grep -nr string
표준 입력에서 검색 할 컨텐츠를 읽습니다. 따라서 입력을 기다리기만하고 ^ C를 누를 때 중지합니다 (^ D에서 중지됨). -파일).
grep -inr "my word" .
-r
grep은 하위 디렉토리에서 재귀 적으로 검색 -n
하는 것을 의미하며 각 출력 행 앞에 해당 행을 포함하는 파일의 해당 행 번호를 접두어로 사용합니다. man grep
이 모든 것을 설명합니다.
GREP : 글로벌 정규식 인쇄 / 파서 / 프로세서 / 프로그램.
이것을 사용하여 현재 디렉토리를 검색 할 수 있습니다.
"재귀"에 -R을 지정할 수 있습니다. 즉, 프로그램은 모든 하위 폴더와 하위 폴더 및 하위 폴더의 하위 폴더 등을 검색합니다.
grep -R "your word" .
-n
파일에서 일치하는 줄 번호를 인쇄합니다.
-i
대소 문자를 구분하지 않고 검색합니다 (대문자 / 비대 문자).
grep -inR "your regex pattern" .
grep -nr search_string search_dir
search_string에 대해 RECURSIVE (디렉토리 및 모든 서브 디렉토리를 의미 함) 검색을 수행합니다. (usta가 올바르게 대답 한대로).
친구의 제안에 대해 아무런 대답을 얻지 못한 이유는 다음과 같습니다.
grep -nr string
디렉토리가 지정되지 않았기 때문입니다. 검색하려는 디렉토리에있는 경우 다음을 수행해야합니다.
grep -nr string .
'.'를 포함하는 것이 중요합니다. grep에게이 디렉토리를 검색하도록 지시합니다.
또한있다 :
find directory_name -type f -print0 | xargs -0 grep -li word
하지만 초보자에게는 다소 도움이 될 것입니다.
find
-type f
"디렉토리 및 명명 된 파이프가 아닌 일반 파일을 찾는 것"및 " -print0
널 문자를 구분 기호로 사용하여 표준 출력에 인쇄 "를 의미 하는 범용 디렉토리 워커 / 리스너 입니다. 에서 출력 find
이 전송되고 xargs -0
표준 줄 바꿈 대신 레코드 구분 기호로 널 문자를 사용하여 표준 입력을 청크로 표시합니다 (명령 행 길이 제한을 피하기 위해) grep -li word
. 각 파일 세트에 적용됩니다 . 온 grep
, -l
수단 "파일 목록 일치하는"및 -i
수단 "의 경우를 구분"; 일반적으로 단일 문자 옵션을 결합하여 -li
보다 자주 볼 수 있습니다 -l -i
.
당신이 사용하지 않는 경우 -print0
그리고 -0
당신은 그들을 사용하는 것은 좋은 습관이다, 그래서 공백이 포함 된 파일 이름 문제로 실행됩니다.
man find
명령 줄에서 find
지원 하는 옵션을 확인하십시오 .
하위 디렉토리에서 모든 인스턴스를 찾기 위해 재귀 검색을 수행하지 않는 이유는 무엇입니까?
grep -r 'text' *
이것은 매력처럼 작동합니다.
선택한 답변은 괜찮으며 작동하지만 올바른 방법은 아닙니다.
grep -nr yourString* .
실제로 문자열을 검색 "yourStrin"
하고 "g"
0 번 또는 여러 번 검색합니다 .
따라서 올바른 방법은 다음과 같습니다.
grep -nr \w*yourString\w* .
이 명령은 현재 폴더에서 전후에 임의의 문자로 문자열을 검색합니다.
grep -nr yourString
이 베어를 찾습니다으로도 작동 yourString
라인 어디서나 (또는 내 시스템, OSX 라이온에 않습니다 적어도)
@eLRuLL이 게시 한 답변과 유사하게 단어 경계를 존중하는 검색을 지정하는 더 쉬운 방법은 -w
옵션 을 사용하는 것입니다.
grep -wnr "yourString" .
*
무엇입니까? 쉘 와일드 카드 확장 (와일드 카드 패턴과 일치하는 파일 이름이있는 경우)이 발생하거나 grep이이를 선행 문자에 대해 0 이상의 반복 연산자로 사용합니다*
.