본문 바로가기
리눅스

find 명령어

by sonysame 2016. 9. 12.

http://geundi.tistory.com/37

파일을 찾는 명령어 find


1. 기능

다양한 옵션을 통해 찾고자 하는 파일의 조건을 설정할 뒤 그 조건에 맞는 파일을 검색할 수 있다.


2. 사용법

find [찾을 디렉토리 경로]  [찾기옵션]


3. 찾을 디렉토리 경로

  :  루트에서부터 검색을 한다. 즉 전체를 검색한다.
  :  현재 디렉토리를 포함하여 하위 디렉토리까지 검색한다.
/디렉토리   :  지정된 디렉토리에 검색


4. 옵션

-name [파일이름]   :  파일이름과 일치
  파일명 또는 확장자를 기준으로 검색할 수 있다.

-perm [권한]  :  권한과  : 일치하는 파일
  ex) find / -user level2 -perm -4000
       4000의 의미는 -(최소한), 4(SetUID)가 걸려있는 000(모든파일)을 의미한다.

-user [유저]  :  유저와 일치

-group [그룹] :  그룹과 일치하는 파일

-empty : 비어있는 파일이나 디렉토리를 검색
  ex)find . -empty
       현재 디렉토리 이하에서 비어있는 파일과 디렉토리를 검색.

-size [+파일크기/-파일크기/파일크기][bckw중 택1] : 파일크기와 일치하는 파일


  b : 블록단위 512kb
  c : byte
  k : kbyte
  w : 2byte 워드
  아무런 단위를 붙이지 않은 경우 : 디폴트 값 b

  파일크기에 +1024k 이렇게 +를 붙이는 경우에는 크기가 1024kbyte 이상인 것을 찾고, -는 그 이하, +,-를 붙이지 않는 경우에는 그 크기의 파일을 찾는다.

  ex)find / -size 1024k
       시스템 전체에서 파일크기가 1024kbyte인 파일을 검색한다.

-type [파일타입] : 파일의 타입을 지정하여 검색한다.

  b : 블록 특수 파일(block device)
  c : 캐릭터 특수 파일 (character deice)
  d : 디렉토리(directory)
  : 일반파일(file)
  l : 심볼릭 링크(link)
  p : 파이프 (pipe)
  s : 소켓 (socket)

-print : 찾은 파일들을 표준출력(stdout)으로 출력한다. 기본으로 설정되어 있다.

-nouser : 소유자가 없는 파일을 검색(/etc/passwd 파일에 없는 사용자의 소유자로 되어 있는 파일을 검색)

-nogroup : /etc/groups파일에 없는 그룹의 소유인 파일을 검색한다.

-fprint [임의파일명] : 검색된 파일을 `임의파일명'으로 출력한다.(`임의파일명'이 존재 하지 않을 경우에는 새로 생성되고, 존재할 경우에는 기존의 파일은 없어짐)

-exec command {} \; : 파일이 검색되었을 경우, 검색된 파일들에 대해 특정 명령을 수행 할 때 사용한다. 

  {} : 검색된 파일들을 의미한다. 여러개의 파일이 검색되면 하나씩 치환되면서 해당명령이 실행되는 것이다.  
  ; : 검색된 결과가 여러개인 경우 하나의 행에 여러 명령을 사용하기 위함이다. 
  \ : ;이 특수 문자이기 때문에 문자로 ;라는 것을 알려 주기 위함이다.

  ex) find . -name kkk* -exec rm {} \;  //kkk로 시작하는 파일을 검색하여 삭제(rm)함. 

-ok : -exec와 동일한 작업을 한다. 다른 점은, 명령을 실행할 때마다 실행 의사를 물어본다. 

-newer file1 file2
`file1' 보다는 이후에 `file2' 보다는 이전에 생성되거나 변형된 파일들을 찾을 경우에 사용한다.

-cnewer 파일명 : '파일명' 부분에 적어준 파일보다 더 최근에 수정된 파일들을 찾아준다.

-atime +n/-n/n : 최근 n일 이전에 액세스된 파일을 찾아준다.(accessed time)
   +n : n일 또는 n일 이전에 액세스된 파일
   -n : 오늘 부터 n일 전 사이에 액세스 된 파일
    n : 정확히 n일 전에 액세스된 파일

-ctime +n/-n/n : ctime은 파일의 퍼미션을 마지막으로 변경시킨 날짜를 의미한다. (changed time)
   +n : n일 또는 n일 이전에 퍼미션이 변경된 파일
   -n : 오늘 부터 n일 전 사이에 퍼미션이 변경된 파일
    n :  정확히 n일 전에 퍼미션이 변경된 파일

-mtime +n/-n/n : mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미한다.(modified time
    +n : n일 또는 n일 이전에 수정된 파일
    -n : 오늘 부터 n일 전 사이에 수정된 파일
      n : 정확히 n일 전에 수정된 파일

-mount 현재의 파일 시스템과 동일한 타입의 파일 시스템에서만 검색을 할 경우에 사용한다.

-maxdepth n : 0이 아닌 정수값으로 경로 깊이를 지정하여 검색을 할 경우에 사용한다. 예를들어, '-maxdepth 1'은 시작위치로 지정한 디렉토리만 검색하고 하위 디렉토리는 찾지 않는다.

-mindepth n : 0이 아닌 정수값으로 지정된 숫자만큼의 깊이에서부터 그 하위 디렉토리를 검색한다. (GNU find 버전)

-follow : 심볼릭 링크된 디렉토리도 검색을 할 경우에 사용한다.

-regex : 정규표현식(regular expression)을 이용하여 파일들을 찾을 경우에 사용한다. `-iregex'는 대소문자를 구별하지 않을 경우에 사용한다. (GNU find 버전)
action은 test에서의 조건과 일치하는 파일들에 대해 수행할 작업을 명시하는 것으로 다음과 같은 방법들이 있다. 

-ls : `ls -dils' 형식으로 찾은 파일들의 정보를 출력할때 사용한다.

-fls [임의파일명] : `ls'와 동일하게 동작하며 결과를 [임의파일명]로 출력한다. 


http://webdir.tistory.com/155


find

find는 검색기능과 여러가지 부가기능을 가진 명령어이다.

사용법 : find [검색대상위치] [옵션] [수행할작업]

용량이 0 인 비어있는 파일을 검색하는 것

BASH
find / -empty -exec ls -l {} \;

특정 소유자의 파일 찾고자 할때

BASH
find / -uid 500 -exec ls -l {} \;

특정 사용자의 소유파일들을 검색

BASH
find / -user nestgoer -print

'-print' 는 검색결과를 파일의 절대경로로 표시하는 반면 '-exec ls -l \;' 는 ls -l 과 같은 형식으로 검색결과를 표시한다.


특정 디렉토리에서 특정 파일 검색

BASH
find /home -name *.html -exec ls -l {} \; 

검색된 파일을 바로 삭제

BASH
find ~nestgoer -name *.bak -exec rm -f {} \;

'-exec' 는 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하라는 의미이며 {} 는 찾아진 파일들을 하나씩 대입됨을 의미한다. 따라서 검색된 파일의 개수만큼 -exec 뒤의 명령어가 실행된다.


파일용량이 큰 파일들을 모두 검색하여 처리

BASH
find / -size +100M -exec ls -lh {} \;

지정한 퍼미션을 가지고 있는 파일 검색

'리눅스' 카테고리의 다른 글

인포샵 비비에스에서의 텔넷 서비스 무능력  (0) 2016.09.10
touch  (0) 2016.09.10
데몬  (0) 2016.09.10
리눅스 명령어  (0) 2016.09.06
리눅스 배포판의 종류  (0) 2016.09.06