Linux ETC

find 명령 1

2008.05.14 22:58

sylee 조회 수:25983

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 라고 하면 많은량의 설명을 볼수 있음
번호 제목 글쓴이 날짜 조회 수
386 cdp 백업 프로세스 관련 호스트웨이 2015.09.07 1007
385 Linux vmstat 명령어 호스트웨이 2015.09.08 1094
384 현재 접속 사용자(머신/디바이스)수 알아내기 호스트웨이 2012.11.16 1130
383 잘못푼 압축파일(tar.gz) 지우는 방법 호스트웨이 2012.12.07 1273
382 sftp 서비스 막기 호스트웨이 2012.12.27 1320
381 우분투 서버에 JDK7 설치하기 호스트웨이 2015.09.13 1360
380 Linux 외장 저장장치 mount file 호스트웨이 2015.09.10 1397
379 2015년 7월1일 윤초 발생 관련 점검 방안 file 호스트웨이 2015.06.30 1558
378 리눅스 whereis 명령어 file 호스트웨이 2012.09.28 1634
377 Log file 주기적으로 정리하기 호스트웨이 2015.09.08 1644
376 특정 파일이 소속된 rpm 패키지 찾기 호스트웨이 2012.12.14 1782
375 arch 명령어를 통해 컴퓨터 종류 알기 file 호스트웨이 2012.11.16 1797
374 리눅스 free 명령어 호스트웨이 2012.12.26 1819
373 locate 명령어를 이용해 빠르게 지정한 파일 찾기 file 호스트웨이 2012.12.12 1859
372 queryperf 설치 및 사용 방법 (DNS 스트레스 테스트) 호스트웨이 2012.11.29 1871
371 kbd_mode 명령어를 통해 인식중인 키보드모드 출력 및 변경하기 file 호스트웨이 2012.11.06 1896
370 /proc 디렉터리내 파일 정보 알아보기 호스트웨이 2012.11.21 1917
369 top 사용 추가 tip 호스트웨이 2015.09.15 2016
368 limits.conf 설명 file 호스트웨이 2012.11.09 2133
367 free -m 에서 free (남는 메모리 양) 최소량 제한하기 호스트웨이 2012.12.21 2147