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 Proftp 설치 및 xinetd 에서 실행하기 file 호스트웨이 2015.09.18 2052
305 samba 설치 file 호스트웨이 2014.04.14 2062
304 Touch 파일 용량 0바이트 만들기 호스트웨이 2015.09.20 2083
303 UTF-8 환경의 Linux 에서 SAMBA 한글 인코딩 문제 해결 방법 호스트웨이 2015.09.09 2137
302 UTF-8 환경에서 리눅스 한글 꺠짐 현상 해결법 호스트웨이 2015.09.08 2226
301 디렉토리(폴더) 색상 변경하기 file 호스트웨이 2015.09.08 2260
300 라우팅 제어명령 호스트웨이 2015.09.17 2287
299 리눅스 관리툴 webmin 설치하기 호스트웨이 2012.12.07 2291
298 삭제된 파일 복구 - 1 호스트웨이 2015.09.23 2352
297 명령어 dstat 사용하기 호스트웨이 2015.09.01 2356
296 iptables를 이용한 ssh 스캐닝 공격 방어 호스트웨이 2012.09.21 2360
295 동일 네트워크의 중복 IP검색 호스트웨이 2015.09.23 2405
294 리눅스 wc 명령어 file 호스트웨이 2012.10.26 2407
293 리눅스 dmesg 명령어 file 호스트웨이 2012.12.06 2418
292 nl명령어를 사용해 파일내용 출력시 행번호 붙이기 file 호스트웨이 2012.12.20 2431
291 리눅스 tree 명령어 file 호스트웨이 2012.09.21 2447
290 vsftpd 패시브 모드 설정 호스트웨이 2015.09.13 2460
289 df 와 du의 출력 크기가 다르게 보이는 이유 호스트웨이 2012.12.14 2471
288 서버 네트워크 대역폭 제한 호스트웨이 2015.09.20 2527
287 리눅스 파티션 볼륨 레이블 설정 file 호스트웨이 2012.11.01 2541