본문 바로가기

Server/리눅스

[리눅스 명령어] find, grep : 파일 찾기 명령어

1. find : 하위 폴더에 존재하는 파일을 찾아주는 명령어

 

find [검색 디렉토리] [옵션] [파일명]

 

옵션 의미
-name 대소문자 구분하여 파일명 검색
-iname 대소문자 구분하지 않고 파일명 검색

ex)

      find . -name FTPFILES

      find ./ftp -iname ftpfiles

 

ex2) root 경로의 파일 중 size가 5M 이상이고 파일의 상태가 변한지 5일 이상된 것을 찾는다. (s,m,h,d,w 를 단위로 구분. 초,분,시,일,주를 나타냄)     

     find / -type f -size +5M -mtime +5d

 

ex3) 위의 예시를 응용. {}: find를 통해 나온 결과를 의미하는 변수. \; : 정상적으로 모든 exec 실행이 끝이 났다는 것을 find에게 알려줌

     find / -type f -size +5M -mtime +5d -exec ls -l {} \; (출력을 ls 형태로 출력)

     find / -type f -size +5M -mtime +5d -exec rm -rf {} \; (삭제하는 명령

 

2. grep : 하위 폴더를 포함하여 존재하는 모든 파일에서 원하는 단어를 찾아주는 명령어. 해당 단어를 포함하고 있는 모든 행을 출력한다.

 

grep [옵션] [패턴(단어)] [파일명]

*단어 내에 공백이 있을 경우에는 " "를 사용

 

옵션 의미
-r 하위 디렉토리까지 검색
-i 비교시 대소문자 구분 안함
-l 패턴이 포함된 파일의 이름 출력
-v 패턴과 일치하지 않는 행만 출력
-c 패턴이 일치하는 행의 수 출력
-w 패턴이 전체 단어와 일치하는 행만 출력
-n 행의 번호를 함께 출력

+ A2, B2 옵션으로 해당 패턴의 아래 위 2줄씩 출력되게 하는 옵션도 존재

 

ex)  grep -rni ftpfiles *

 

ex2) grep -i ftpfiles * --color=auto (특정 패턴에 색상을 입혀 출력하기)

 

*find&grep 동시 사용 (파일이 아닌 표준입력을 활용하여 특정 파일에서 특정 패턴 찾기)

ex) find ./ -iname "*.sh" | xargs grep -i ftpfiles