본문 바로가기

Server Story..../Linux

Find 명령어 정리 및 찾은후 삭제 관련 건

아주 유용하지만 엄청난 옵션에 입이 따~악 벌어지는 find 군!

몇가지 만 알면 수십줄의 코딩을 한줄로 끝낼 수도 있는 find의 옵션을 정리해 봅니다.

 

기본사항

1. * : 모든 것을 의미한다.
2. $ 와 같이 쉘에서 의미를 갖는 문자를 검색할 경우 앞에 "\"를 붙인다.
3. 단어를 검색할 경우 반드시 single quotation(')을 앞뒤에 붙여서 검색한다.
4. 각 옵션은 혼합하여 사용할 수 있다.
5. 숫자 옵션 
   +n : n 이상인 파일 검색
   -n : n 이하인 파일 검색
   n : 정확하게 n과 일치하는 파일 검색

 

 

파일명 검색 -name

예) 파일명에 "php"가 들어간 파일 검색
    # find . -name '*php'

 


용량 검색 -size

예) 용량이 100KBytes 이상인 파일 검색
    # find . -size +100k 

 


파일 형식 -type

f : 일반 파일
d : 디렉터리
l : 심볼릭 링크 파일
s : 소켓 파일

예) 디렉터리이면서 이름 중에 melong 이 들어간 것을 검색
   # find . -type d -name '*melong*'


 

파일의 소유자 -user

예) 소유자가 nobody 인 파일 검색
   # find . -user nobody


 

파일의 수정일자 -mtime

-mtime +n : 오늘을 기준으로 n일 이전에 변경된 파일 검색
-mtime -n : 오늘을 기준으로 n일 이내에 변경된 파일검색

예) 3일 이내에 변경된 파일 검색
   # find . -mtime -3


 

파일의 엑세스 일자 -atime

-atime +n : 오늘을 기준으로 n일 이전에 엑세스한 적이 있는 파일 검색
-atime -n : 오늘을 기준으로 n일 이내에 엑세스한 적이 있는 파일검색

예) 10일 이전에 엑세스한 적이 있는 파일 검색
   # find . -atime +10


 

검색할 디렉터리의 깊이 지정 -maxdepth

지정한 디렉터리에서 n개 깊이의 디렉터리까지 검색한다.

예) 2개의 깊이에 있는 디렉터리까지 검색하여 파일명에 php가 있는 파일 검색
   # find . -name '*php*' -maxdepth 2


 

검색한 파일에 대한 특정한 명령을 실행 -exec 명령어 {} \;

기본 형식 : -exec 명령어 {} \; 
  - 반드시 끝에 \; 를 붙여야 한다.
  - {}에 찾은 파일명이 들어간다.

예) 파일명이 bak로 끝나는 파일을 찾아서 삭제
   # find . -name '*bak' -exec rm {} \;

 

 

find를 잘 설명해 놓은 사이트


 

이 외에도 상당히 많은 옵션이 있으며 정규식을 이용한 파일찾기도 가능하다.

후에 기회가 되는 데로 추가해서 정리할 예정~