본문 바로가기
모의해킹 침해대응 과정/Linux 기초

리눅스 기초때기 4일차 검색기능 명령어. / GREP, FIND

by 알거음슴 2021. 4. 2.

grep

파일 내 특정 패턴을 검색하여 해당 패턴을 포함하는 모든 라인을 출력하는 기능.

 

1. 형식

[grep] [OTPIONS] [PATTERN] [FILENAME]

 

2. 옵션

 grep -l : 해당 패턴이 있는 파일 이름을 출력한다.

 grep -r : 하위폴더 포함하여 해당 패턴이 있는 파일 안에있는 내용들을 출력한다. ([파일이름]:[파일내패턴내용])

 grep -n : 출력할때 패턴이 있는 해당 줄번호와 함깨 출력해준다.

 grep -v : 패턴이 있는 내용을 제외한 나머지 모든 내용의 줄을 출력한다. ( keyword 제외 )

 grep -i : 패턴을 찾을때 대소문자를 구분하지 않고 모두 출력한다.

 grep -w : 키워드를 한단어로 인식해서 찾아줌 ( grep root 의 경우 rootroot.txt 는 제외 root.txt 는 찾음 )

 grep -A : 찾은것의 위의 n줄

 grep -B : 찾은것의 아래 n줄

 

 fgrep(=grep -F) : ' ' 으로 묶인 패턴을 그 의미 그대로로 인식해줌

ex) ^root : 문자열처음의 root 가 아닌 ^root 그대로 인식

 egrep(=grep -E) : 여러 단어가 있을경우를 모두 찾아줌. (확장의 개념)

ex) egrep -i '(warn|err|fail|crit|alert|emerg)'

 

[참조] 정규화된 패턴 사용법

* : 앞의 문제가 0회 이상    ex) # grep 'ro*t' /etc/passwd

.  : 1개의 문자를 매치        ex) # grep 'no...y' /etc/passwd 

^ : 문자열 라인의 처음      ex) root # grep '^root' /etc/passwd 

$ : 문자열 라인의 마지막    ex) root$ # grep 'bash$' /etc/passwd

[] : 대괄호에 포함된 문자 중 한개와 매치        ex) # grep 'user0[123]' /etc/passwd 

 

[참조] 주요 활용처

 cat /etc/passwd | grep root

 rpm -qa | grep httpd

 ps -ef | grep rsyslogd

 systemctl list-unit-files | grep ssh

 netstat -antup | grep :22

 

 

 

find

디렉토리 안에서 원하는 파일을 찾고자 할 때 사용하는 명령어이다.

 

1. 형식

[find] / [검색시작위치] [OPTION] [인자값1] [OPTION] [인자값2] ...

 

2. 옵션

 find -type : 파일의 타입으로 검색

* f = 일반파일 / d= 디렉토리 / c = 문자 / ㅣ= 링크 / s = 소켓 / b = 블록파일

 find -name  :  파일의 이름으로 검색 ( * 활용 하여 다양하게 검색가능 )

 find -user/group : 유저이름이나 그룹으로 검색

 find -mtime : 수정 또는 생성 시간 기준으로 검색 [-7(최근6일간)|7(지정날자)|+7(8일기준으로 그이전)]

 find -perm : 퍼미션으로 검색 ( 755 / -755(최소한 755 퍼미션을 소유한) )

 find -size : 파일 크기로 검색 [-300(0~300)M|300M|+300(300~a)M]

 find -exec [CMD] \; : 찾은 결과를 CMD에 맞게 실행하라.

 -o : or 의 의미 앞 구문과 뒷 구문

 -a : and 의 의미 앞구문과 뒷 구문

 

 [참고]자주 사용되는 find 명령어 형식들

 find / -name core -type [f|d] (# find / -name "*oracle*" -type f)

 find / -user user01 -group class1

 find / -mtime [-7|7|+7]

 find / -perm [-755|755]

 find / -size [-300M|300M|+300M]

 find / -name core -type f -exec rm {} \; 

-> -name core -type f으로 찾은 결과를 {} 안에 넣고 -exec 실행하라 rm 지우는것을 

 

3. 활용예시

 1) 오래된 로그 기록 삭제

ex) find /Log_dir2 -name "*.log" -type f -mtime +60 -exec rm -f {} \;

 2) 파일 시스템이 갑자기 풀(Full) 나는 경우 *full : 꽉차다

ex) find /var -mtime -2 -size +512M -type f

 3) 에러메세지가 들어 있는 startup script 검색 예

 4) 에러 메세지를 검색하는 방법에 대해서

ex) find /source -type f -exec grep -l 'server error' {} \;