[string] grep을 사용하여 폴더 내에서 단어를 찾으려면 어떻게해야합니까?

Windows에서는 폴더 내에서 단어를 찾기 위해 검색을 수행했을 것입니다. 마찬가지로 많은 하위 디렉토리와 파일을 포함하는 디렉토리 내에서 특정 단어가 발생하는지 알고 싶습니다. grep 구문을 검색하면 파일 이름, 즉을 지정해야합니다 grep string filename.

이제 파일 이름을 모르므로 어떻게해야합니까? 친구가 할 것을 제안 grep -nr string했지만 이것이 무엇을 의미하는지 모르겠으며 결과가 없습니다 (을 발행 할 때까지 응답이 없습니다 ctrl + c).



답변

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 string my_directory

추가 사항 : grep [options] string filenameUnix 계열 시스템에서 디렉토리는 일종의 파일이기 때문에 구문을 만족시킵니다 (Windows에서는 “파일”이라고하는 엔티티를 구체적으로 지칭하는 “일반 파일”이라는 용어가 있습니다).

grep -nr string 표준 입력에서 검색 할 컨텐츠를 읽습니다. 따라서 입력을 기다리기만하고 ^ C를 누를 때 중지합니다 (^ D에서 중지됨). -파일).


답변

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당신은 그들을 사용하는 것은 좋은 습관이다, 그래서 공백이 포함 된 파일 이름 문제로 실행됩니다.


답변

하위 디렉토리에서 모든 인스턴스를 찾기 위해 재귀 검색을 수행하지 않는 이유는 무엇입니까?

grep -r 'text' *

이것은 매력처럼 작동합니다.


답변

  1. grep -r "yourstring" *
    모든 파일과 폴더에서 “yourstring”을 찾습니다

이제 두 개의 다른 문자열을 동시에 찾으려면 언제든지 옵션 E를 사용하고 검색 할 단어를 추가 할 수 있습니다. 휴식 후의 예

  1. grep -rE "yourstring|yourotherstring|$" *목록의 위치를 검색 할 수 yourstring또는 yourotherstring일치