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 명령 {}").
grep -r "yourstring" *
및 에서 "의 문자열을 찾습니다. "당신의 문자열"을 찾습니다.
이제 두 개의 다른 문자열을 동시에 찾으려면 항상 옵션 E를 사용하고 검색에 단어를 추가할 수 있습니다. 예를 들어 휴식 후
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
'programing' 카테고리의 다른 글
포스트 그레스 테이블에 데이터 프레임을 쓰는 방법 (0) | 2023.05.16 |
---|---|
Git에 단계별 변경 사항만 저장하려면 어떻게 해야 합니까? (0) | 2023.05.16 |
VBA 열에 값이 있는지 확인합니다. (0) | 2023.05.16 |
MongoDB에서 커서란 무엇입니까? (0) | 2023.05.16 |
Bash에서 변수로 정의된 숫자 범위에서 반복하는 방법은 무엇입니까? (0) | 2023.05.16 |