Linux ETC

find 명령 1

2008.05.14 22:58

sylee 조회 수:22852

find는 사용자가 찾고자 하는 파일등을 찾아주는 역활을 한다.
이름만을 가지고 찾거나 파일 모드, 파일 타입, 크기, 마지막으로
접근한 시간등 여러가지 조건으로 파일을 찾아준다.
사용 방법은 다음과 같다.

사용방법 :  find <대상디렉토리> <연산자>

1) <대상디렉토리>
  find가 찾는 파일 위치를 지정한다.
예을 들어 '/'는 /(root)부터 찾고, '.'은 현재 디렉토리 부터 찾는다.

2) <연산자>

-name 파일명
  파일명과 일치하는 파일을 찾는다.
  와일드 카드(*)도 사용가능하다.
  '/' 에서 화일 확장자가 bak 인 화일을 찾는 예제
  find / -name '*.bak' -print

-perm 모드
  파일 퍼미션 조건이 모드와 일치하는 것만을 찾아 준다.
  퍼미션은 읽기(r), 쓰기(w), 실행(x)하기 등으로 나타낸다.
  현재의 디렉토리에서 666(rw-rw-rw-)모드의 파일들을 찾는 예는 다음과 같다.
  find . -perm 666 -print

-type 타입
  파일의 타입을 지정하여, 찾고자하는 파일을 찾는다.
  타입의 종류는 다음과 같다.
  b : 블록 특수 파일(block device)
  c : 캐릭터 특수 파일 (character deice)
  d : 디렉토리(directory)
  f : 일반파일(file)
  l : 심볼릭 링크(link)
  p : 파이프 (pipe)
  s : 소켓 (socket)

예) 현재의 디렉토리 아래에 있는 서브디렉토리를 모두 찾을 경우
  find . -type d -print

예) /home 폴더내에서 확장자가 php인 화일을 찾을 경우
   find /home -name '*.php' -print

-atime  +n/-n/n
  최근 n일 이전에 액세스된 파일을 찾아준다.(accessed time)
  +n : n일 또는 그보다 더 오래 전의 파일을 찾는다.
  -n : 오늘 부터 n일 전까지의 파일을 찾는다.
   n : 정확히 n일 전에 액세스되었음을 의미한다.

-ctime  +n/-n/n
  atime과 비슷하나 다른 점은 atime은 얼마나 오래전에 파일을 액세스 하였는가를 검사하지만
   ctime은 파일의 퍼비션을 마지막으로 변경시킨 날짜를 의미한다.(changed time)
  최근 n일 이전에 액세스된 파일을 찾아준다.
  +n : n일 또는 그보다 더 오래 전의 파일을
  -n : 오늘 부터 n일 전까지의 파일을
   n : 정확히 n일 전에 수정되었음을 의미한다.

-mtime  +n/-n/n
  ctime과 비슷하나 다른 점은 ctime은 파일의 퍼미션을 변경시킨 날짜를 의미 하지만,
  mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미한다.(modified time)
  최근 n일 이전에 액세스된 파일을 찾아준다.
  +n : n일 또는 그보다 더 오래 전의 파일을
  -n : 오늘 부터 n일 전까지의 파일을
   n : 정확히 n일 전에 수정되었음을 의미한다.

  현재 디렉토리 아래에서 최근 3일 동안 고친 파일을 모두 찾을 경우
  find . -ctime -3 -print

  시스템 전체에서 한 달 또는 그 이상의 기간동안 한번도 액세스하지 않은 디렉토리를 찾을경우
  find / -atime +30 -type d -print

-user 유저네임
  '유저네임' 부분에 지정한 유저 소유의 파일을 찾아준다.
   find / -user mail -print  

  -nouser
   파일의 소유자가 없는 파일을 찾아 준다.

  -group 그룹네임
   지정한 그룹네임에 해당되는 파일을 찾아 준다.

  -nogroup
   파일의 소유자의 그룹이 없는 파일을 찾아 준다.

-print
  find 명령의 결과를 보여 준다. 기본적으로 맨 마지막에 꼭 붙여 줘야 하는 연산이다.

  -exec 명령어 {} ;
   find의 결과로 찾아낸 파일이나 디렉토리에 대해서 이 명령어를 실행(execute)한다.

   find / -nouser -print -exec ls -l {} ;

  -ok 명령어 {} ;
   exec 연산과 비슷하다. 다만 다른것은 그 명령어를 행하기 전에 사용자에게
   실행여부를 물어본다는 것이다. 따라서 좀 더 안전하다고 할 수 있겠다.
   홈 디렉토리 아래에 있는 확장자가 bak로 끝나는 모든 파일을 확인하며 삭제를 하려고 할때,
    -ok 대신에 -exec를 사용한다면, 물어 보지 않고 삭제해 버린다.
  
   find /home -name '*.bak' -type f -ok rm {} ;


  - ! 또는 -not연산
   !뒤에나오는 연산과 일치하지 않는 파일을 찾아 준다.
   현재의 디렉토리에서 소문자로 시작하지 않는 파일들 찾으려면,
   find . ! -name '[a-z]*' -type f -print

  
  -size +n/-n/n[bckw]
   n뒤에 아무것도 쓰지 않으면 기본적으로 n블럭 크기의 파일을 찾는다.
   기본적으로 1블럭은 512바이트이다. 만약 n뒤에 c를 쓰면 character(쉽게
   말해서 byte) 단위가 되고, k를 쓰면 킬로바이트, w를 쓰면 위드 즉2바이트가
   된다. +은 지정한 크기 이상 -은 지정한 크기 이하를 나타낸다.
    
   만약 전체 시스템에서 파일 크기가 0인 파일을 모두 찾고 싶다면
   find / -size 0 -print
  
   현재 디렉토리 아래에서 파일 크기가 1메가바이트 이상인 파일을 모두 찾아서
   해당 파일에대한 정보를 자세히 보고 싶다면
   find . -size +1024k -exec ls -l {} ;

  -links n
   n개의 링크를 가진 파일을 찾아 준다.

참고로 find 명령에 대하여 더 자세한 내용은 man find 라고 하면 많은량의 설명을 볼수 있음
번호 제목 글쓴이 날짜 조회 수
306 서버의 바이오스, 메인보드에서 지원하는 최대 메모리 확인 방법 호스트웨이 2012.03.23 17742
305 arp 명령 사용법 호스트웨이 2012.03.27 26426
304 top 명령어 및 옵션 설명 file 호스트웨이 2012.03.27 46582
303 Swap 메모리 늘리기 file 호스트웨이 2012.03.30 60743
302 현재 설치된 메모리 정보를 확인하는 방법 호스트웨이 2012.03.30 26157
301 하드디스크의 배드블럭을 검사하는 명령어 (badblocks) 호스트웨이 2012.03.30 18813
300 find 명령어-1 호스트웨이 2012.03.30 14046
299 Linux 서버 root password 분실시 변경 방법 file 호스트웨이 2012.03.30 19771
298 VI 편집기에서 사용되는 명령어 호스트웨이 2012.03.30 12957
297 Linux Charset 확인 및 변경 file 호스트웨이 2012.03.30 70479
296 VI 편집기에서 사용되는 명령어(2) 호스트웨이 2012.04.06 12319
295 Linux lastlog를 이용한 최근 접속정보 확인 file 호스트웨이 2012.04.06 16441
294 계정 생성 시 ftp 계정만 주고 Shell 로그인 차단하기 file 호스트웨이 2012.04.06 20397
293 ipv6 비활성화 하기 호스트웨이 2012.04.06 20625
292 서버 아이피 변경으로 인한 다량의 네임서버 존파일 일괄 변경 방법 호스트웨이 2012.04.06 14436
291 vsftpd.conf 옵션 설명 호스트웨이 2012.04.06 15776
290 chattr 명령을 이용한 파일 속성 변경 file 호스트웨이 2012.04.07 16735
289 서비스 이름으로 포트 번호 확인하기 호스트웨이 2012.04.13 53619
288 국가명 약어 (국가코드) 호스트웨이 2012.04.13 49698
287 ngrep 사용법 호스트웨이 2012.04.13 15783