리눅스마스터2급강좌 : 원하는 파일 검색하기 find
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,201 조회
- 0 추천
- 목록
본문
리눅스마스터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 | 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하도록 한다.
{}는 검색된 파일들이 하나씩 대입되는 것을 의미하며, 검색된 파일의 개수만큼 명령이 실행된다.
마지막에는 \;를 붙인다. |
표준 출력에서 완전한 파일명을 출력하도록 한다. |
다음은 특정 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 {} \; |
|
|
|
|
관련자료
-
이전
-
다음