grep 을 이용 특정 문자를 포함하는 파일을 찾기
grep 명령어는 파일에서 문자열을 찾는 명령어로 잘 사용하면 강력한 검색력을 발휘 할 수도 있습니다.
grep 을 사용하여 파일에서 문자열을 검색하는 방법에 대한 몇 가지 일반적인 예제입니다.
grep “text string to search” directory-path
grep [option] “text string to search” directory-path
grep -r “text string to search” /directory-path
grep -r -H “text string to search” directory-path
egrep -R “word-1|word-2” /path/to/directory
# Find string in files on Linux #
egrep -w -R “word-1|word-2” directory-path
주어진 텍스트 문자열에 대한 모든 파일을 검색하고 찾는 방법
이 예제에서 /home/디렉토리에 있는 모든 텍스트(*.txt) 파일에서 ‘readme’라는 문자열을 검색하고 다음을 사용합니다.
$ grep “readme” /home/ *.txt
Linux의 파일에서 “readme”라는 텍스트를 찾습니다.
$ grep “readme” ~/*.txt
작업: 모든 하위 디렉터리를 재귀적으로 검색하여 파일에서 텍스트 찾기
grep -r 옵션 을 사용하여 재귀적으로 각 디렉토리 아래의 모든 파일을 텍스트 문자열로 검색할 수 있습니다 .
$ grep -r “readme” /home/
또는
$ grep -R “readme” /home/
Linux에서 cache 텍스트가 포함된 모든 파일을 찾습니다.
$ grep -R HTTPRequest /home/
전체 Linux 서버에서 문자열을 검색하고 싶습니다. 즉, “agent”라는 단어를 검색하려면 다음 명령을 사용하십시오
$ sudo grep -R “agent” /
. /루트 파일 시스템을 나타냅니다. 위의 명령은 시간이 많이 걸릴 수 있습니다. 따라서 필요에 따라 특정 디렉토리로 검색을 제한하는 것이 좋습니다.
$ sudo grep -R “agent” /etc/
작업: 파일 이름만 표시
grep 명령은 기본적으로 일치하는 행을 인쇄합니다. -H각 일치 항목에 대한 파일 이름을 인쇄하는 옵션을 전달할 수 있습니다 .
$ grep -H -r “readme” /home
샘플 출력:
filename.txt: readme
foobar.txt: readme
…
파일 이름만 표시하려면 다음과 같이 cut 명령을 사용하십시오.
$ grep -H -R vivek /etc/* | cut -d: -f1
샘플 출력:
파일명.txt
foobar.txt
…
작업: 파일 이름 제외하기
grep 명령은 출력을 별도의 줄에 표시하며 여러 파일의 경우 찾은 파일 이름이 앞에 옵니다. -h출력에 파일 이름이 포함되지 않도록 하는 옵션을 전달할 수 있습니다 .
$ grep -h -R ‘main()’ ~/projects/*.c
작업: 단어만 표시
옵션 을 사용하여 전체 단어를 구성하는 일치 항목이 포함된 행만 선택할 수 있습니다 -w. 이 예에서는 ~/projects/ 디렉토리에서만 ‘getMyData()’라는 단어를 검색합니다.
$ grep -w -R ‘getMyData()’ ~/projects/
작업: 두 개 이상의 단어 검색
다음과 같이 egrep 명령을 사용합니다.
$ egrep -w -R ‘word1|word2’ ~/projects/
작업: 경고 스팸 숨기기
grep 명령은 권한 및 기타 문제로 인해 다음과 같은 오류 메시지를 생성합니다.
해당 파일 또는 디렉터리 가
없습니다 해당 장치 또는 주소 가 없습니다
권한이 거부되었습니다
grep 명령에 의해 생성된 모든 오류 또는 경고 메시지 스팸을 숨기려면 2>/dev/null을 grep 명령 에 추가하십시오 . 이것은 원치 않는 출력을 /dev/null 장치로 보내고 숨깁니다:
$ grep -w -R ‘getMyData()’ ~/projects/ 2>/dev/null
작업: 일치하는 텍스트를 색상으로 표시
–color 터미널에서 일치하는 텍스트/단어를 색상으로 표시하는 grep 명령에 옵션을 전달합니다 .
grep –color ‘단어’ 파일
grep –color ‘단어’ /경로/ to /dir
grep –color -R “192.168.” /etc/
grep –color -R -h “192.168.” /etc/
grep –color -R -h “192.168.” /etc/ 2>/ dev/null
작업: 대소문자 무시
마지막 예는 검색 PATTERN과 입력 파일 모두에서 대소문자 구분을 무시합니다.
$ grep -i -R ‘word’ /path/to/dir
$ grep -i -r ‘income tax’ ~/accounting/
Linux에서 특정 텍스트가 포함된 모든 파일을 찾기
구문은 다음과 같습니다.
$ egrep ‘pattern’ -rnw /path/to/dir/
$ egrep ‘word1|word2’ -rnw /home/vivek/backups/
grep내용 정리하기
Linux에서 grep 명령을 사용하여 특정 텍스트 문자열(단어)이 포함된 파일을 검색하고 찾는 방법
grep을 사용하여 파일 내에서 텍스트 문자열 찾기
이 예제는 소문자 또는 대문자로 시작하는 줄을 검색합니다.
$ grep “^[a-zA-Z]” -rns ~/projects/texts/
여기서,
- -r– 재귀 검색
- -R– 각 디렉토리 아래의 모든 파일을 재귀적으로 읽습니다. -rgrep 옵션 과 달리 모든 심볼릭 링크를 따르십시오.
- -n– 일치하는 각 줄의 줄 번호 표시
- -s– 존재하지 않거나 읽을 수 없는 파일에 대한 오류 메시지 억제
- -w– 단어에 대해서만 작동합니다. 즉, 전체 단어를 구성하는 일치 항목이 포함된 행만 검색합니다.
- -l– 일치하는 항목이 발견되면 각 입력 파일의 이름을 표시합니다.
- -i– 검색 시 대소문자 무시
추가적인 옵션들은 man 명령 또는 grep 명령 을 사용하여 참고하십시오.
$ man grep
$ grep –help