Linux ETC

find 명령어-1

2012.03.30 03:21

호스트웨이 조회 수:14935

 find 명령어-1

 

1. 기능

 지정된 경로로 주어진 조건에 따라 파일을 찾고 그 경로를 보여주는 명령으로
 파일의 조건을 이름이나 크기, 날짜 등 다양하게 지정할 수 있습니다.


2. 사용법
 find 명령의 일반적인 형식

  find <대상경로> <옵션> <검색 조건> <처리방법>

 

3. 검색옵션

 -name filename  :  파일 이름을 찾음
  -atime +n access  :  시간이 n일 이전인 파일을 찾음
  -atime -n access  :  시간이 n일 이내인 파일을 찾음
  -mtime +n  :  n일 이전에 변경된 파일을 찾음
  -mtime -n  :  n일 이내에 변경된 파일을 찾음
  -perm nnn  :  파일 권한이 nnn인 파일을 찾음
  -type x  :  파일 타입이 x인 파일들을 찾음
  -size n  :  사이즈가 n 이상인 파일들을 찾음
  -links n  :  링크된 개수가 n인 파일들을 찾음
  -user username  :  user 이름으로 찾음
  -group groupname  :  group 이름으로 찾음
 -type filetype : 찾고자 하는 파일이나 디렉토리의 유형을 지정 해줄때 사용함
 
 타입의 종류
 1) -type b : 블록 특수 파일(block device)
 2) -type c : 캐릭터 특수 파일 (character deice)
 3) -type d : 디렉토리(directory)
 4) -type f : 일반파일(file) 
 5) -type l : 심볼릭 링크(link)
 6) -type p : 파이프 (pipe)
 7) -type s : 소켓 (socket)


4. 처리 방법
   찾은 파일을 어떻게 할 것인지 지정합니다.
 
 -print  :  찾은 파일의 절대 경로명은 화면에 출력
  -exec cmd {};  :  찾은 파일들에 대해 cmd 명령어를 실행함


5. 사용예

자신의 홈 디렉토리에서 확장자가 '.txt'인 파일을 찾는 예
$ find   -name "*.txt'' -print

현재 디렉토리 밑에서 test 이라는 이름을 가진 사용자 소유의 파일을 찾는 예
$ find . -user test -print

자신의 홈 디렉토리에서 최근 3일 동안 변경된 파일들을 찾는 예
$ find . -mtime -3 -print

현재 폴더에서 최근 5일 동안 변경되지 않은 파일들을 찾아서 삭제하는 경우
$ find . -mtime +5 -print -ok rm {} ;

현재 폴더에서 피션이 777인 파일을 찾아 리스트로 보여주는 예
$ find . -type f -perm 777 -exec ls -l {} ;

현재 디렉토리에서 가장 큰 파일을 찾기
$ find  .  -type  f  | xargs  du  -s  | sort  -n  |  tail  -1

현재 디렉토리에서 확장자가 txt 이고 host 이란 문자열이 포함된 파일 검색
$ find / -name "*.txt" -print -exec grep host {}

txt 문서를 찾아서 그 문서들을 tar로 묶기
$ find . -name "*.txt" | xargs tar cvf txt.tar