기본적으로 대부분의 검색 도구는 파일 내용이 아닌 파일 이름을 봅니다. 그러나 가장 유명한 GNU 검색 프로그램인 grep
, 올바른 플래그가 있는 파일 내부를 찾습니다. 여기에서는 Linux의 파일에서 특정 단어를 찾는 방법을 보여줍니다.
grep을 사용하여 파일에서 특정 단어 찾기
기본적으로 grep은 파일의 내용과 파일 이름을 검색합니다. 대부분의 Linux 시스템에 포함되어 있으며 일반적으로 배포판에서 동일합니다. 즉, 작거나 덜 강력한 Linux 상자는 ack
과 같은 다른 명령을 실행하는 것을 선호할 수 있습니다. .
파일이 인코딩되는 방식에 따라 grep이 항상 내부를 볼 수 있는 것은 아닙니다. 그러나 대부분의 텍스트 기반 형식의 경우 grep은 지정된 패턴에 대해 파일 텍스트를 스캔할 수 있습니다.
grep -Rw '/path/to/search/' -e 'pattern'
-R
플래그는 grep을 재귀 모드로 설정하여 지정된 디렉토리에 포함된 모든 디렉토리를 탐색합니다. -w
플래그는 전체 단어 일치를 검색합니다. 즉, 'red'는 'redundant' 또는 'tired'가 아닌 공백 문자로 둘러싸인 'red'와만 일치합니다. -e
플래그는 검색할 패턴을 시작합니다. 기본적으로 정규식을 지원합니다.
grep 속도를 높이려면 --exclude
를 사용할 수 있습니다. 및 --include
특정 유형의 파일로 검색을 제한하는 플래그입니다. 예:--exclude=*.csv
확장자가 .csv인 파일은 검색하지 않습니다. --include=*.txt
, 는 확장자가 .txt인 파일 내에서만 검색합니다. 플래그는 아래와 같이 grep 명령 직후에 추가할 수 있습니다.
grep --exclude=*.csv -Rw '/path/to/search' -e 'pattern'
아래 형식에 따라 지정된 디렉토리를 제외할 수도 있습니다.
grep --exclude-dir={dir1,dir2,*_old} -Rw '/path/to/search' -e 'pattern'
이 명령은 dir1, dir2라는 이름의 현재 작업 디렉토리 또는 *_old 패턴과 일치하는 디렉토리에서 검색하지 않고 검색 프로세스에서 제거합니다. 현재 작업 디렉토리의 다른 모든 파일에 대해 지정된 재귀적 전체 단어 일치 검색을 실행합니다.
찾기를 사용하여 파일에서 특정 단어 찾기
find
동안 명령의 구문은 grep보다 복잡하지만 일부는 선호합니다.
find . -name "*.php" -exec grep "pattern" {} \;
이 명령은 find의 -exec
를 사용합니다. 검색을 위해 찾은 파일을 grep에 전달하는 플래그입니다. 구문을 똑똑하게 배열하면 find의 더 빠른 파일 시스템 검색을 사용하여 검색하려는 특정 파일 유형을 찾은 다음 파일 내부를 검색하기 위해 grep으로 파이프할 수 있습니다.
find는 내용이 아닌 파일 이름만 봅니다. 그렇기 때문에 파일 텍스트와 내용을 검색하려면 grep이 필요합니다. 일반 grep 플래그는 -exec
내에서 완전히 작동해야 합니다. 플래그.
ack를 사용하여 파일에서 특정 단어 찾기
ack 명령은 가장 빠른 검색 도구이지만 위의 옵션만큼 인기가 없습니다. 아래 명령은 현재 디렉토리 내에서 검색합니다.
ack 'pattern'
특정 파일이나 디렉터리 내에서 검색하려면 해당 파일이나 정규화된 경로 이름을 검색에 추가할 수 있습니다.
ack 'pattern' /path/to/file.txt
결론
대부분의 상황에서 대부분의 사람들에게 grep은 널리 사용되는 최고의 검색 도구입니다. 더 빠른 검색 옵션을 위해 RipGrep과 같은 다른 검색 도구를 볼 수도 있습니다.