programing

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

closeapi 2023. 5. 16. 22:40
반응형

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

Windows(윈도우)에서는 폴더 내에서 단어를 검색할 수 있습니다.마찬가지로, 많은 하위 디렉터리와 파일을 포함하는 디렉터리 내에서 특정 단어가 발생하는지 알고 싶습니다.grep 구문을 검색하면 파일 이름을 지정해야 합니다.grep string filename.

이제 파일 이름을 모르는데 어떻게 해야 하나요?친구가 제안했습니다.grep -nr string하지만 저는 이것이 무엇을 의미하는지 모르고 결과를 얻지 못했습니다(+를 발행할 때까지 응답이 없습니다.

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*.*'동일한 작업을 수행하는 또 다른 방법입니다.)

더 많은 매개 변수를 확인하려면 mangrep 명령을 사용합니다.

grep -nr string my_directory

추가 참고: 구문을 충족합니다.grep [options] string filename왜냐하면 유닉스 계열 시스템에서 디렉터리는 일종의 파일(Windows에서 단순히 "파일"이라고 부르는 엔티티를 구체적으로 지칭하는 "일반 파일"이라는 용어가 있음)이기 때문입니다.

grep -nr string는 표준 입력에서 검색할 내용을 읽습니다. 따라서 사용자의 입력을 기다리는 동안에만 해당 내용을 읽으며, ^C를 누르면 해당 내용이 중지됩니다(파일 끝의 키 조합인 ^D에서도 중지됨).

GEP: 글로벌 정규식 인쇄/파서/프로세서/프로그램.
이를 통해 현재 디렉토리를 검색할 수 있습니다.
"재귀적"으로 -R을 지정할 수 있습니다. 즉, 프로그램이 모든 하위 폴더와 하위 폴더, 하위 폴더 등에서 검색합니다.

grep -R "your word" .

-n파일에서 일치하는 라인 번호를 인쇄합니다.
-i대소문자를 구분하지 않고 검색합니다(대문자/대문자 이외의 문자).

grep -inR "your regex pattern" .

다음과 같은 기능도 있습니다.

find directory_name -type f -print0 | xargs -0 grep -li word

초보자에게는 좀 부담스러울 수도 있습니다.

find범용 디렉토리 워커/리스터입니다.-type f"디렉토리 및 명명된 파이프가 아닌 일반 파일을 찾으십시오."를 의미합니다.-print0는 "null 문자를 구분 기호로 사용하여 표준 출력에 인쇄"를 의미합니다.의 출력find다음으로 전송처xargs -0그리고 표준 새 줄이 아닌 null 문자를 레코드 구분 기호로 사용하여(명령줄 길이 제한을 피하기 위해) 표준 입력을 청크로 캡처한 다음 적용됩니다.grep -li word각 파일 집합에 적용됩니다.에서grep,-l"일치하는 파일 나열"을 의미합니다.-i대소문자를 구분하지 않음을 의미합니다. 일반적으로 단일 문자 옵션을 결합하여 확인할 수 있습니다.-li보다더자보다 더 -l -i.

당신이 않경지는우를 사용하지 -print0그리고.-0공백이 포함된 파일 이름에 문제가 발생할 수 있으므로 파일 이름을 사용하는 것이 좋습니다.

grep -nr search_string search_dir

search_string에 대해 재귀적(디렉토리와 모든 하위 디렉터리를 의미) 검색을 수행합니다.(usta가 정확하게 답변한 대로)

다음과 같은 친구의 제안에 대해 아무런 답변을 얻지 못한 이유:

grep -nr string

디렉터리가 지정되지 않았기 때문입니다.검색할 디렉터리에 있는 경우 다음을 수행해야 합니다.

grep -nr string .

이 디렉토리를 검색하도록 grep에 지시하므로 '.' 문자를 포함하는 것이 중요합니다.

하위 디렉터리에서 모든 인스턴스를 찾기 위해 재귀 검색을 수행하는 것은 어떻습니까?

grep -r 'text' *

이것은 매력적으로 작동합니다.

@올린하는 더 은 @eLRull을 입니다.-w옵션:

grep -wnr "yourString" .

제가 사용하고 싶은 또 다른 옵션은 다음과 같습니다.

find folder_name -type f -exec grep your_text  {} \;

-type f는 파일만 반환하고 폴더는 반환하지 않습니다.

-exec 및 {}은(는) 검색에서 발견된 파일에 대해 grep를 실행합니다(정확한 구문은 "-exec 명령 {}").

  1. grep -r "yourstring" * 및 에서 "의 문자열을 찾습니다. "당신의 문자열"을 찾습니다.

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

  1. grep -rE "yourstring|yourotherstring|$" *를 검색합니다.yourstring또는yourotherstring

선택한 답변은 문제가 없으며 작동하지만 다음과 같은 이유로 올바른 방법이 아닙니다.

grep -nr yourString* .

" 은이실로문을검다니색합열자제것"를 합니다."yourStrin"그리고."g"0회 또는 여러 번.

따라서 적절한 방법은 다음과 같습니다.

grep -nr \w*yourString\w* .

이 명령은 현재 폴더의 앞뒤에 있는 문자열을 검색합니다.

grep -R "string" /directory/

-r이 아닌 경우에도 -R이 기호를 따릅니다.

은 다샘플재다찾습니다을음로으귀음적은▁recursively를 재귀적으로 찾습니다.your search string에 시대에*.xml그리고.*.js폴더 내부 어딘가에 위치한 파일path1,path2그리고.path3.

grep -r --include=*.xml --include=*.js "your search string" path1 path2 path3

따라서 파일의 하위 집합에서 많은 디렉터리를 검색하고 마지막에 경로를 제공할 수 있습니다.

디렉토리 내에서 다음 명령을 실행합니다(터미널).하위 디렉터리 내부도 재귀적으로 검사합니다.

grep -r 'your string goes here' * 

grep을 사용하지 마세요.Silver Searcher 또는 Ripgrep다운로드합니다.둘 다 탁월하며, 수많은 옵션을 제공하는 grep 또는 ack보다 훨씬 빠릅니다.

언급URL : https://stackoverflow.com/questions/4121803/how-can-i-use-grep-to-find-a-word-inside-a-folder

반응형