운영체제/Linux

grep, egrep, fgrep, find

blackbearwow 2024. 3. 18. 17:55

grep 과 find의 차이는 grep은 파일 내용에서 찾는 프로그램이고 find는 파일을 찾는 프로그램이다.

grep

개요

grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS [FILE...]
grep [OPTION...] -f PATTERNS [FILE...]

설명

grep은 file에서 patterns를 찾는다. patterns는 새 줄 문자로 구분된 하나 이상의 패턴이다.

그리고 grep은 패턴이 매치된 각 줄을 출력한다.

만약 file이 주어지지 않았다면, stdin에서 찾는다.

(ls | grep PATTERNS처럼 pipe를 이용해 stdin을 넘겨줄 수 있고, grep [OPTION...] PATTERNS만 입력하면 쉘에서 입력하는 것을 분석한다.)

옵션

-G, --basic-regex

  PATTERNS를 기본 정규표현식으로 해석한다. 기본값이다. 아무것도 지정하지 않으면 -G를 한것과 같다.

-E, --extended-regex

  PATTERNS를 확장 정규표현식으로 해석한다

-F, --fixed-strings

  PATTERNS를 정규표현식이 아닌 문자열로 해석한다.

 

egrep, fgrep

egrep은 grep -E와 같다. fgrep은 grep -F와 같다. 이 프로그램들은 deprecate되었지만, 호환성을 위해 제공되고있다.

 

find

개요

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]

설명

주어진 [starting-point]를 루트(주어지지 않으면 `.'로 추정)로 하위 디렉토리까지 [expression]에 맞는 파일을 탐색하여 출력한다.

옵션

-H, -L, -P 옵션은 심볼릭 링크 처리를 컨트롤한다.

표현

(find 명령어는 다른 명령어와는 달리 옵션은 거의 사용되지 않고 표현을 통해 타깃을 정한다)

- name pattern

shell패턴(shell 메타문자중 glob패턴 포함 등) pattern에 매치되는 파일 이름 탐색.

전체 path의 매치를 찾는것이지, 탐색이 아니다. grep은 일부만 매치되어도 출력해주지만 이것은 아니다.

- type c

파일의 타입이 c인 파일 탐색

- regex pattern

정규표현식 pattern에 매치되는 파일 이름 매치.

전체 path의 매치를 찾는것이지, 탐색이 아니다. grep은 일부만 매치되어도 출력해주지만 이것은 아니다.

 

 

참조: https://man7.org/linux/man-pages/man1/grep.1.html

https://en.wikipedia.org/wiki/Glob_(programming)

https://man7.org/linux/man-pages/man1/find.1.html

 

-