Self-Improvement

Linux 명령어(grep, egrep, fgrep, find) 본문

리눅스/명령어

Linux 명령어(grep, egrep, fgrep, find)

JoGeun 2018. 10. 21. 13:33

*grep (파일 내에서 특정한 패턴을 검색하여 그 패턴을 포함하는 모든 줄을 화면에 출력)
 #grep root /etc/passwd : (root가 들어가 있는 라인을 출력)
 #grep -l root /etc/hosts /etc/passwd /etc/group : (세 개의 파일 중에서 root가 포함되어있는 파일만 출력)
 #grep -n root /etc/passwd : (검색된 라인의 몇 번째 줄인지도 같이 출력)
 #grep -v root /etc/passwd : (해당 검색 단어를 제외하고 모든 라인을 출력)
 #grep -i root /etc/passwd : (root의 대소문자를 구분 없이 검색)
 #grep -w root file1 : (root라는 단어만 되어있는 라인을 출력)
 #grep --color root /etc/paswd : (컬러풀하게 출력)

 //패턴
 * : 
 . : 모든 한 글자의 의미 ex) #grep 'no... y /etc/passwd (no...y 가운데 ...의 세 글자가 아무거나 들어간 no...y을 검색)
 ^root : 첫 번째가 root로 시작되는 것
 root$ : 마지막이 root로 끝나는 것
 [abc] : #grep 'user0[123]' /etc/passwd (user0,1,2,3을 검색)

 //bashrc에 등록
 alias grep='grep -i --color' (대소문자 구별 없이 컬러풀하게 미리 등록하면 도움이 됨)

*egrep (grep의 확장 버전, =grep -E)
 여러 개의 문자열을 검색할 때 유용
 #egrep -i '(문자열 1|문자열 2)'

 //예제
 #cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'

*fgrep (특수문자를 명령어로 해석하지 않게끔 하는 grep)
 #fgrep ^root file1 (^root라는 문자열을 찾기 위한 것)

*find (파일들을 찾는 명령어
 #find / -name core -type -f(일반 파일),-d(디렉터리) : (core라는 파일을 검색)
 #find / -user 유저명 -group 그룹명 : (유저와 그룹을 동시에 만족하는 거 찾기)
 #find / -mtime 숫자(+7/7/-7) 
 #find / -perm 퍼미션 숫자(-755/755) 
 #find / -size 크기(-300M/300M/+300M)
 #find / -name core -type f -exec rm {} \; : (-exec 명령어 {} \; =명령어를 실행하라)

 //예제
 1. 오래된 로그 기록 삭제
  #find /Log_Dir1 -name "*.log" -type f -mtime +30 -exec rm -f {} \;
 2. 파일시스템이 갑자기 가득 찬 경우(어제오늘 갑자기)
  #find /var -mtime -2 -size +512M -type f (lsof CMD)