한국어

About_LINUX

find 사용법

2003.10.26 13:54

jun 조회 수:1539

출처   http://www.procoms.com/procoms/download/linux_com/find.htm

 

find             
어떤 지장된 형식과 일치하는 파일을 검색하는 명령이다.
특정 단어를 포함한 모든 파일을 검색할 수 있다.
findgrep 명령은 많이 사용되는 명령어 중의 하나이다.

■ 사용법
find [path] [expression]

path(경로)는 find 명령으로 찾아볼 디렉토리의 시작위치이다.
경로를 지정하지 않으면 기본적으로 시작 위치와 그 하위 디렉토리 모두를 검색한다. 경로를 루트 디렉토리(/)로 지정한다면 find 명령은 파일 시스템 전체를 검색한다.

expression(표현식)은 옵션과 테스트, 행동(action)으로 구성된다.
옵션(option)은 테스트와 상관없이 항상 적용된다.

■ 옵션 및 매개변수

-maxdepth

0 이 아닌 정수값으로 경로 깊이를 지정. '-maxdepth 1'은 시작 위치로 지정한 디렉토리만 검색하고 하위 디렉토리는 찾지 않는다. -mindepth 옵션은 반대로 동작한다. 지정한 숫자만큼의 깊이부터 그 하위 디렉토리를 검색한다.

-xdev

검색을 시작한 파일 시스템에서만 검색을 수행하도록 설정한다. 하위 디렉토리에 링크된 파일 시스템은 검색하지 않는다.

-atime N

n일 전에 액세스(access)된 파일을 찾음.

-mtime N

n일 전에 수정(modify)된 파일을 찾음.

-newer USR

file보다 늦게 수정된 파일을 찾음.

-size n

n*512 바이트 길이를 가지는 파일을 찾음.

-name WORD

파일 이름으로 검색. 이름에는 메타 문자(*, ?, [])를 사용할 수 있다.

-perm MODE

퍼미션으로 검색. (-perm +2000)

-type LETTER

파일형식으로 검색. f는 보통 파일, d는 디렉토리 파일을 의미.

-user USR

사용자 이름이 usr인 파일을 찾음.

-nouser

파일 소유자 이름이 등록되어 있지 않은 파일을 찾음.

-nogrp

파일 소유 그룹 이름이 등록되어 있지 않은 파일을 찾음.

행동(action) 옵션은 조건(test)과 일치하는 파일에 대해 수행할 작업을 설정함.

-exec CMD

명령(CMD)을 실행. 명령행의 끝은 반드시 \; 로 닫아 주어야 한다. 현재 찾은 파일이름의 배열을 {}로 입력으로 사용할 수 있다. 아래 명령은 확장자가 bak인 모든 파일을 찾아 삭제한다.

-ok CMD

명령을 실행하기 전에 사용자 입력을 기다린다.

-print

표준출력(stdout)으로 출력. 기본설정이다.

-print0

-print와 같이 동작하지만 출력의 끝에 개행문자를 붙이지 않는다.

-fprint FILE

-print와 같이 동작하면서 출력을 지정한 파일로 보냄.

-ls

ls [-dils] 형식으로 파일 정보를 자세히 출력.

-fls

-ls 와 같이 동작하면서 출력을 지정한 파일로 보냄.

■ 사용 예
아래는 'patch -' 라는 문자열을 담고 있는 문서를 검색하여 파일 이름과 검색된 줄을 화면으로 출력하는 예이다. find 명령을 둘러 싼 문자(`는 따옴표가 아님)는 둘러싸인 명령의 수행 결과를 다른 명령의 인수로 돌려준다. 예 에서는 하위 디렉토리의 모든 파일을 grep 명령의 인수로 넘겨준다.
grep 'patch -' `find /usr/doc/HOWTO/ -type f`

bash2가 사용중인 쉘이라면 위 명령은 다음과 같이 달라진다.
grep 'patch -' $(find /usr/doc/HOWTO/ -type f)

검색된 결과를 파일로 저장하고 less 유틸리티를 이용하여 살펴보는 것도 좋은 방법이다.
grep 'patch -' `find /usr/doc/HOWTO/ -type f` | tee patch.list
less patch.list

파일이름으로 검색하려면 아래 예처럼 -name 을 사용합니다. 아래 명령은 파일이름 끝에 net이라는 문자열이 포함된 파일을 모두 프린터로 출력한다.
find /usr/doc/HOWTO/ -name '*net' -exec lpr {} \;

.