강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급강좌 : 원하는 파일 검색하기 find

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 : 원하는 파일 검색하기 find

find

find 명령은 리눅스 시스템 내에 존재하는 특정 파일들을 검색하는 명령어이다.

 

 

 

 

하지만 이 명령어는 단순히 파일을 찾는 역할만을 하는 것이 아니라 찾은 파일에 대해서 특정 작업까지도 할 수 있다.

 

 

 

 

예를 들어 찾은 파일들을 모두 삭제한다든지, 퍼미션을 변경한다든지, 소유자를 변경한다든지 하는 작업들을 find 명령어 내에서 모두 한 번에 할 수가 있는 매우 강력한 관리자 명령어이다.

 

파일을 찾을 때에도 매우 다양한 방법으로 찾을 수 있도록 많은 옵션과 방법들을 제공한다.

 

 

 

 

특정 파일 하나만을 찾을 수도 있고, 특정 문자 패턴에 맞는 파일들을 검색하거나 또는 특정 확장자를 가지는 파일 검색 등 다양한 방법으로 검색할 수 있다.

 

 

 

 

또한 파일 이름으로 검색하는 것 외에도 특정 소유자의 파일 찾기, 소유자가 없는 파일 찾기, 특정파일사이즈 이상 되는 파일 찾기, 지정된 퍼미션(permission)을 가진 파일 찾기 등의 매우 다양한 검색방법을 사용할 수 있다.

 

find 명령은 “find [찾을 디렉토리 경로] [찾기 옵션] [찾은 후 행할 작업]”의 형식으로 사용한다.

 

 

 

 

다음은 가장 전형적인 파일 찾기의 사례이다.

 

 

 

 

 

# find /usr name *.html -print

 

 

 

 

 

find에서 사용할 수 있는 옵션들은 매우 다양하지만 찾기 옵션 중에서 자주 사용되는 것들은 다음과 같다.

 

옵 션

기 능

-name 패턴

파일명에 기초하여 쉘 패턴에 맞는 파일을 찾는다.

 

 

 

 

기본적으로 파일명을 지정한다.

 

 

 

 

와일드카드 사용이 가능하다.

-uid UID

지정된 UID를 갖는 파일을 찾는다.

-gid GID

지정된 GID를 갖는 파일을 찾는다.

-group 그룹명

지정된 그룹명을 가진 파일을 찾는다.

-user 소유자

지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다.

-perm 모드

지정된 퍼미션을 가진 파일을 찾는다.

-newer 파일

지정된 파일 이후에 생성된 파일을 찾는다.

-used n

상태가 변경된 후로 최종 접근된 지 n일 지난 파일을 찾는다.

 

 

 

 

 

-type

파일 형식을 지정하여 지정한 형식의 파일을 찾는다.

 

 

 

 

d(디렉토리), c(입출력 특수 파일), b(블록 파일), l(심볼릭 링크 파일), p(파이프 파일), f(일반 파일), s(소켓 파일) 등을 지원한다.

 

 

 

 

 

-links

특정 개수의 링크를 가진 파일 찾기

-size

파일 크기가 일치하는 파일 찾기

-atime n

n일 전에 엑세스한 파일 찾기. 범위를 정할 때에는 +n 또는 n 형식으로도 사용이 가능하다.

-mtime n

n일 전에 마지막으로 수정된 파일 찾기. 범위를 정할 때에는 +n 또는 n 형식으로도 사용이 가능하다.

-exec

찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하도록 한다.

 

 

 

 

{}는 검색된 파일들이 하나씩 대입되는 것을 의미하며, 검색된 파일의 개수만큼 명령이 실행된다.

 

 

 

 

마지막에는 \;를 붙인다.

-print

표준 출력에서 완전한 파일명을 출력하도록 한다.

 

 

다음은 특정 UID 소유의 모든 파일을 찾는 예제이다.

 

 

 

 

 

 

 

 

 

 

# find / uid 501 -print

 

 

 

 

 

다음은 특정 사용자의 ID 소유로 된 모든 파일을 찾는 예제이다.

 

 

 

 

 

# find / user sulinuxer -print

 

 

 

 

 

다음은 특정 사용자의 홈디렉토리 내에서 특정 파일을 찾는 예제이다.

 

 

 

 

 

# find /home/sulinuxer name *.html -print

 

 

 

 

 

다음은 리눅스 시스템내의 특정파일들을 검색하여 자동으로 삭제하는 예제이다.

 

 

 

 

 

# find ~sulinuxer name *.bak exec rm f {} \;

 

 

 

 

 

다음은 지정한 소유자의 모든 파일을 찾아서 확인하는 예제이다.

 

 

 

 

 

# find / -user sulinuxer exec ls l {} \;

 

 

 

 

 

다음은 특정용량 이상 되는 파일들을 모두 찾는 예제이다(용량 단위로 파일 검색).

 

 

 

 

 

# find /usr size +10000k exec ls l {} \;

 

 

 

 

 

다음은 특정 퍼미션을 가지고 있는 모두 찾는 예제이다.

 

 

 

 

 

# find / -perm 4755 exec ls l {} \;

 

 

 

 

 

다음은 상태가 변경된 후로 최종 접근된 지 n일 지난 모든 파일을 찾는 예제이다.

 

 

 

 

오랫동안 사용되지 않은 파일들을 찾아서 관리하는데 유용하다.

 

 

 

 

# find / used 2 exec ls l {} \;

 

 

 

 

 

다음은 90일이 넘는 기간 동안 수정되지 않은 파일들을 삭제하는 예제이다.

 

 

 

 

 

# find ~sulunuxer mtime +90 exec rm -f {} \;

 

 

 

 

 

다음은 지정된 파일보다 이후에 생성된 파일을 찾는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / newer /root/file1.txt exec ls l {} \;

 

 

 

 

 

다음은 특정 디렉토리 내에 존재하는 모든 링크파일을 검사하는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / type l -exec ls l {} \;

 

 

 

 

 

다음은 root 소유의 SetUID 파일을 찾는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / user root perm 4000 -print

 

 

 

 

 

다음은 파일 퍼미션에 SetUID 또는 SetGID가 있는 파일을 모두 찾아서 보여주는 예제이다.

 

 

 

 

이 예제에서 o“or”를 의미한다.

 

 

 

 

 

# find / type f \( perm 004000 o perm 002000 \) -exec ls l {} \;

 

 

 

 

 

다음은 소유자가 없는 파일 또는 소유그룹이 없는 무적파일을 찾는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / nouser o nogroup -print

 

 

 

 

 

다음은 쓰기 권한이 있는 파일을 찾는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / type f \( perm 2 o perm 20 \) -exec ls l {} \;

 

 

 

 

 

다음은 쓰기 권한이 있는 디렉토리를 찾는 예제이다(서버 보안 점검시 사용).

 

 

 

 

 

# find / type d \( perm 2 o perm 20 \) -exec ls ld {} \;

 

 

 

 

 

다음은 특정 문자를 포함하는 파일을 찾고 해당 파일에서 그 문자가 속한 행을 찾는 예제이다.

 

 

 

 

 

# find /home/bible type f exec egrep i “doc” /dev/null {} \;

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  216 명