FIND(1)

명칭
find - 디렉토리 트리를 재귀적으로 내려 파일을 찾는다

서식
find [-H | -L | -P] [-EXdsx] [-f pathname] [pathname ...] expression

해설
find 유틸리티는, pathname 에 대해서 디렉토리 트리를 재귀적으로 내려, 트리상의 각 파일에 대해 expression ( 후에 나타낸다 “프라이머리” (와)과 “연산자” (으)로부터 구성됩니다) 그리고 지정된 처리를 실행합니다.

옵션으로서는 이하의 것이 있습니다:

-E  -regex 및 -iregex 의 옵션의 뒤의 정규 표현을, 기본 정규 표현 (BRE)대신에 확장 (최근의) 정규 표현으로서 해석합니다. re_format(7) 메뉴얼 페이지는, 양쪽 모두의 포맷을 완전하게 해설하고 있습니다.

-H  file 그리고 지정한 파일이 기호 연결 파일이었던 경우, 기호 연결 자체가 아니고, 링크처의 파일에 관해서 파일 정보와 파일 타입 ( stat(2) 참조)를 사용해 expression 의 처리를 하도록(듯이) 지정합니다. 만약 링크처의 파일이 없으면, 기호 연결 자체를 처리의 대상으로 합니다. 명령행으로부터의 file 그리고 직접 지정된 것은 아니고, 디렉토리 트리상에서 발견된 기호 연결 파일에 관해서는, 기호 연결 자체를 처리의 대상으로 합니다.

-L  file 그리고 지정한 파일이 기호 연결 파일이었던 경우, 기호 연결 자체가 아니고, 링크처의 파일에 관해서 파일 정보와 파일 타입 ( stat(2) 참조)를 사용해 expression 의 처리를 하도록(듯이) 지정합니다. 만약 링크처의 파일이 차면, 기호 연결 자체를 처리의 대상으로 합니다.

-P  기호 연결 자체에 관해서 파일 정보와 파일 타입 ( stat(2) 참조)를 사용해 expression 의 처리를 하도록(듯이) 지정합니다. 이것이 디폴트입니다.

-X  xargs(1) (와)과 조합해 사용할 때 때문에, 보다 안전하게 동작하도록(듯이) 합니다. 만약 xargs(1) 에 의해 딜리미터 캐릭터 (싱글 쿼트 (“ ' ”) , 더블 쿼트 (“ ”) , backslash (“\”) , 스페이스, 탭, 개행) 하지만 포함되는 파일명 하지만 사용되었을 경우, 진단 메세지를 표준 에러 출력에 표시해, 그 파일명을 스킵 합니다.

    분명하게 동작하는 대안으로서 -print0 프라이머리를 ‘xargs -0’ (와)과 함께 사용하는 것을 검토하면 좋을지도 모릅니다.

-d  파일에 대한 처리 순서를 깊이 우선의 탐색 방식으로 합니다. 즉, 디렉토리 자체에 대하는 처리를 실시하기 전에, 디렉토리내의 개개의 파일에 대해서 처리를 실행합니다. 디폴트에서는, 디렉토리는 최초로 처리됩니다. (디폴트의 방식은 폭우선 탐색 방식으로는 없다 입니다. )

-f file
    명시적으로 파일을 지정합니다. 파일명의 선두가 “-” 그리고 시작되어 있거나, 나중에 말한다 expression 의 지정과 혼동 해 버리는 것 같은 파일명을 지정하거나 할 경우에 사용합니다. (파일은 옵션 직후의 오퍼랜드라고 해도 지정 가능합니다. )

-s  -s 옵션은, 사전 편집상의 순서에, 즉 각 디렉토리내에 있어 알파벳순서에, 파일 계층을 find 에 더듬게 합니다. 주: ‘find -s’ (와)과 ‘find | sort’ (은)는 다른 결과가 되는 경우가 있습니다.

-x  디렉토리 트리를 내려 갈 때, 최초로 file 가 있던 파일 시스템이란 다른 파일 시스템상의 파일에 대한 처리가 되는 경우는, 실행하지 않게 합니다.

프라이머리

-amin n
    마지막에 파일이 액세스 되었을 때 각과 find (을)를 기동했을 때 각과의 차이 (1 분 단위로 끝맺습니다)가 n 분이면, 진으로 합니다.

-anewer file
    -neweram (와)과 같습니다.

-atime n
    마지막에 파일이 액세스 되었을 때 각과 find (을)를 기동했을 때 각과의 차이 (24 시간 단위로 끝맺습니다)가 n 날이면, 진으로 합니다.

-cnewer file
    -newercm (와)과 같습니다.

-ctime n
    마지막에 파일의 스테이터스가 변경되었을 때 각과 find (을)를 기동했을 때 각의 차이 (24 시간 단위로 끝맺습니다)가 n 날이면, 진으로 합니다.

-delete
    찾아낸 파일이나 디렉토리를 소거합니다. 항상 진을 돌려줍니다. 현재의 작업 디렉토리로부터 find (은)는 재귀적으로 디렉토리 트리를 나옵니다. 보안상의 이유로부터, “~”. (으)로부터의 상대 패스명에 “/” 캐릭터를 포함한 파일명의 파일을 소거하려고는 하지 않습니다. 이 옵션에 의해 암시적으로 깊이 우선의 처리가 지정됩니다.

-depth
    항상 진입니다. -d 옵션과 같습니다. find (을)를 cpio(1) (와)과 함께 사용하는 경우, 보통이 아닌 퍼미션의 디렉토리안의 파일을 처리하기 위해서, -depth 하지만 유용합니다.

-empty
    현재의 파일 또는 디렉토리가 하늘의 경우, 진이 됩니다.

-exec utility [argument ...];
    utility 그리고 지정한 이름의 프로그램을 실행해, 종료 코드가 0 의 경우, 진으로 합니다. argument (은)는, utility 에의 인수로서 건네받습니다. 이 지정은, 마지막에 반드시 세미콜론 (“”); (을)를 붙여 주세요. utility 혹은 argument 의 지정 속에서 “{}” 하지만 사용되고 있었을 경우는, 그 부분이, 현재 find 하지만 대상으로 하고 있는 파일의 패스명으로 옮겨집니다. 다만, utility 하지만 실행될 때의 커런트 디렉토리는, find 하지만 기동된 디렉토리인 채입니다. utility (와)과 arguments (은)는, 쉘의 패턴과 구조의 한층 더 전개 대상은 되지 않습니다.

-execdir utility [argument ...];
    -execdir 프라이머리는 -exec 프라이머리와 같습니다만, utility 하지만 현재의 파일을 가지는 디렉토리에 있어 실행되는 점이 다릅니다. 캐릭터 라인 “{}” 에 대해서 치환되는 파일명은 적절하지는 않습니다.

-flags [-|+]flags,notflags
    플래그는, 심볼명 ( chflags(1) 참조)로 지정합니다. 플래그의 전에 "no" (을)를 붙이면(자) ( "nodump" (은)는 제외합니다), notflags (으)로 불립니다. flags 에 있는 플래그는 설정되어 있는 것이 검사되어 notflags 에 있는 플래그는 설정되어 있지 않은 것이 검사됩니다. 이것은, 설정되어 있는 모드 비트만을 유저가 지정 가능한 -perm (와)과는 다른 것에 주의해 주세요.

    플래그의 전에 데쉬 (“-”) 하지만 붙는 경우, 이 프라이머리는, 파일의 flag bit의 쳐 적어도 flags 안의 전비트가 설정되어 있어, notflags 안의 어느 비트도 설정되어 있지 않은 경우에 실로 됩니다. 플래그의 전에 플러스 (“+”) 하지만 붙는 경우, 이 프라이머리는, 파일의 flag bit 중 flags 의 몇개의 비트가 설정되어 있는지, notflags 의 몇개의 비트가 설정되어 있지 않은 경우에 실로 됩니다. 어느 쪽도 아닌 경우, 이 프라이머리는, flags 의 비트가 파일의 flag bit에 완전하게 적합해, flags 의 모두가 notflags 에 적합하지 않는 경우에 실로 됩니다.

-fstype type
    대상 파일이 격납되고 있는 파일 시스템의 타입이, type 그리고 지정된 것인 경우에 진이 됩니다. sysctl(8) 명령을 사용해, 시스템상에서 이용 가능한 파일 시스템 타입을 조사할 수가 있습니다:

        sysctl vfs

    게다가 2 개의 의사 타입 “local” (와)과 “rdonly” (이)가 있습니다. 전자는, find (을)를 실행하고 있는 시스템상에 물리적으로 mount 되고 있는 파일 시스템입니다. 후자는, 독해 전용으로 mount 되고 있는 파일 시스템입니다.

-group gname
    파일이 gname 그리고 지정한 그룹에 속하고 있는 경우, 실로 됩니다. gname 하지만 숫자로, 그러한 그룹명이 없는 경우는, gname (을)를 그룹 ID 로서 취급합니다.

-iname pattern
    -name (을)를 닮아 있습니다만, 대문자 소문자를 구별하지 않고 매치 합니다.

-inum n
    파일의 inode 번호가 n (이)라면, 실로 됩니다.

-ipath pattern
    -path (을)를 닮아 있습니다만, 대문자 소문자를 구별하지 않고 매치 합니다.

-iregex pattern
    -regex (을)를 닮아 있습니다만, 대문자 소문자를 구별하지 않고 매치 합니다.

-links n
    파일의 링크수가 n (이)라면, 실로 됩니다.

-ls 이 프라이머리는 항상 실로 됩니다. 대상이 되고 있는 파일의 정보를 표준 출력에 출력합니다. 출력하는 내용은 inode 번호, 512 바이트 블록에서의 파일의 크기, 파일의 퍼미션, 하드 링크의 수, 소유자, 그룹, 바이트로 나타낸 파일의 크기, 마지막에 파일이 수정되었을 때 각, 패스명입니다. 파일이 블록형 혹은 캐릭터형의 특수 파일이라면, 바이트로 나타낸 파일의 크기 대신에 메이저 번호와 마이너 번호를 출력합니다. 파일이 기호 연결이라면, “->” 의 후에 링크처의 파일의 패스명을 표시합니다. 포맷은 ls -dgils 의 출력 결과와 같습니다.

-maxdepth n
    현재의 파일의 트리에 있어서의 깊이가 n 이하인 경우, 실로 됩니다.

-mindepth n
    현재의 파일의 트리에 있어서의 깊이가 n 이상인 경우, 실로 됩니다.

-mmin n
    마지막에 파일이 수정되었을 때 각과 find (을)를 기동했을 때 각과의 차이 (1 분 단위로 끝맺습니다)가 n 분이면, 진으로 합니다.

-mnewer file
    -newer (와)과 같습니다.

-mtime n
    마지막에 파일이 수정되었을 때 각과 find (을)를 기동했을 때 각과의 차이(24 시간 단위로 끝맺습니다)가 n 날이면, 진으로 합니다.

-name pattern
    대상 파일의 패스명의 마지막 파일명 부분이 pattern 그리고 지정한 것과 매치 하는지 어떤지를 조사해 성냥 했을 경우는 실로 됩니다. pattern (으)로서는, 쉘로 사용되는 패턴 매치 지정 ( “[”, “”], “*”, “”?) (을)를 사용할 수가 있습니다. 이러한 캐릭터는 backslash (“\”) (을)를 앞에 두고 두어, 패턴 매치 지정은 아니고 캐릭터로서 취급하는 일을 명시할 수가 있습니다.

-newer file
    대상 파일의 수정 일자가, file 그리고 지정한 파일의 것보다 새로운 경우는, 실로 됩니다.

-newerXY file
    현재의 파일의 최종 액세스 시각 (X=a) ·스테이터스 수정 시각 (X=c) ·내용 수정 시각 (X=m) 하지만, file 의 최종 액세스 시각 (Y=a) ·스테이터스 수정 시각 (Y=c) ·내용 수정 시각 (Y=m) 보다 새로운 경우는, 진이 됩니다. 한층 더 Y=t 의 경우, file (은)는 대신에, cvs(1) 하지만 이해하는 직접적인 시각 지정으로서 해석됩니다. -newermm 하 -newer (와)과 같은 것으로 주의해 주세요.

-nogroup
    대상 파일의 그룹이 unknown 의 경우, 실로 됩니다.

-nouser
    대상 파일의 소유자가 unknown 의 경우, 실로 됩니다.

-ok utility [argument ...];
    -ok 프라이머리는 exec (와)과 거의 같습니다만, utility (을)를 실행하는지 어떤지의 확인을 유저에게 요구해 단말에 메세지를 출력합니다. “y” 이외의 대답을 했을 경우는, 명령은 실행되지 않고, -ok 식의 값은 가짜가 됩니다.

-okdir utility [argument ...];
    -okdir 프라이머리는, -execdir 프라이머리와 같습니다만, -ok 프라이머리의 해설에 해당하는 부분이 다릅니다.

-path pattern
    대상 파일의 패스명이, pattern 그리고 지정한 것과 매치 화도인지를 조사합니다, 매치 했을 경우는 실로 됩니다. pattern (으)로서는, 쉘로 사용되는 패턴 매치 지정 ( “[”, “”], “*”, “”?) (을)를 사용할 수가 있습니다. 이러한 캐릭터는 backslash (“\”) (을)를 앞에 두고 두어, 패턴 매치 지정은 아니고 캐릭터로서 취급하는 일을 명시할 수가 있습니다. (“/”) (은)는, 그대로 패스의 디렉토리의 단락지어에 매치 합니다.

-perm [-|+]mode
    파일의 모드를, mode (와)과 비교합니다. mode (은)는, 심볼 형식 ( chmod(1) 참조) 혹은 8 진수 형식에서 지정합니다. mode 하지만 심볼 형식의 경우는, mode (은)는 00000 으로부터 개시해 퍼미션세트와 클리어를 실시합니다. (프로세스의 파일 생성 마스크와는 무관계합니다. ) mode 하지만 8 진수 형식의 경우는, 파일의 모드 비트 가운데, 07777 (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) 의 부분이 비교 대상이 됩니다. mode 의 최초로 데쉬 (“-”) (을)를 지정했을 경우는, mode 그리고 세트 떠날 수 있어 모든 비트가 파일의 모드에서도 세트 되고 있으면, 이 프라이머리는 진이 됩니다. mode 의 최초로 플러스 (“+”) (을)를 지정했을 경우는, mode 그리고 세트 되고 있는 비트의 어떤 것인가가 파일의 모드에서도 세트 되고 있으면, 이 프라이머리는 진이 됩니다. 어느 쪽도 아닌 경우, 파일의 모드와 mode 하지만 완전하게 일치했을 경우에게만 진이 됩니다. 덧붙여 심볼 형식에서 모드 지정을 하는 경우는, 적어도 최초가 데쉬 (“-”) (이)가 되지 않는다 같게 할 필요가 있습니다.

-print
    이 프라이머리는 항상 실로 됩니다. 대상이 되고 있는 파일의 패스명을 표준 출력에 출력해 개행합니다. -exec, -ls, -print0, -ok 목의 프라이머리도 지정되지 않았던 경우는, 주어진 식 given expression 는 (given expression) -print 그리고 옮겨놓을 수 있습니다.

-print0
    -print (와)과 거의 같습니다만, 표준 출력에 대상이 되고 있는 파일의 패스명을 출력 한 뒤, 개행이 아니고, ASCII NUL 캐릭터 (문자 코드 0)를 출력합니다.

-prune
    이 프라이머리는 항상 실로 됩니다. 대상이 되고 있는 파일 부하의 디렉토리에 물러나지 않게 합니다. -d 옵션이 지정되어 있는 경우는, -prune 의 지정은 무효가 됩니다.

-regex pattern
    파일의 패스 전체가, 정규 표현 pattern 에 매치 하는 경우, 실로 됩니다. 파일명 “. /foo/xyzzy” 에 매치 시키려면 , 정규 표현 “. */[xyz]*” (이)나 “. */foo/. *” 하지만 사용할 수 있습니다만, “xyzzy” (이)나 “/foo/” (은)는 사용할 수 없습니다.

-size n[c]
    파일 사이즈를 512 바이트의 블록 단위로 세었을 때 (끝수는 끝맺고), n 블록이면 실로 됩니다. n 의 후에 c 하지만 지정되어 있었을 경우는, 파일 사이즈가 n 바이트 (캐릭터)이면 실로 됩니다.

-type t
    파일 타입이 t 그리고 지정된 타입에 일치하면 실로 됩니다. 타입으로서 다음과 같은 지정이 가능합니다:

    b   블록형 특수 파일
    c   캐릭터형 특수 파일
    d   디렉토리
    f   보통 파일
    l   기호 연결
    p   FIFO
    s   소켓

-user uname
    파일의 소유자가, uname 그리고 지정된 유저와 일치하면 실로 됩니다. 만약 uname 하지만 숫자로, 그러한 유저명이 없으면, 유저 ID 가 지정된 것으로서 취급합니다.

덧붙여 숫자를 인수에 있는 프라이머리는, 숫자의 전에 플러스 (“+”) 및 마이너스 (“-”) (을)를 붙일 수가 있습니다. 각각 “n 보다 대” 및 “n 보다 소” 의 의미가 되어, “정확하게 n” 그렇다고 하는 의미는 아니게 됩니다.

연산자
이하의 연산자를 사용해, 프라이머리를 조합할 수가 있습니다. 연산자는 우선도가 흐르는 차례로 나타나고 있습니다.

(expression)
    만약, 괄호내의 expression 하지만 진이라면, 실로 됩니다.

! expression
-false expression
-not expression
    단항 부정 연산자 ( NOT )입니다. expression 하지만 가짜라면, 진이 됩니다.

expression1 -and expression2
expression1 expression2
    논리적 ( AND ) 연산자입니다. expression1 (와)과 expression2 의 양쪽 모두 진정한이라고 해 실로 됩니다. 만약 expression1 하지만 가짜라면, expression2 (은)는 실행되지 않습니다. -and (을)를 쓰지 않고 , 단지 2 개의 expression 를 늘어놓아

    expression1 expression2

    (이)라고 써도 같습니다.

expression1 -or expression2
    논리합 ( OR ) 연산자입니다. expression1 인가 expression2 의 어느 쪽인지 한편에서도 진이면, 실로 됩니다. 만약 expression1 하지만 진이라면, expression2 (은)는 실행되지 않습니다.

사용예
명령행으로부터의 타입예입니다.

find / \!  -name *.c -print
    파일명의 마지막이. c (이)가 아닌 전파일을 표시합니다.

find / -newer ttt -user wnj -print
    ttt 그렇다고 하는 파일보다 새롭고 소유자가 “wnj” 인 전파일을 표시합니다.

find / \!  \( -newer ttt -user wnj \) -print
    ttt 그렇다고 하는 파일보다 낡게 소유자가 “wnj” 이다고 하는 조건이 성립하지 않는, 전파일을 표시합니다.

find / \( -newer ttt -or -user wnj \) -print
    ttt 그렇다고 하는 파일보다 새로운지, 소유자가 “wnj” 인, 전파일을 표시합니다.

find .  -newerct '1 minute ago' -print
    inode 수정 시각이 현재부터 1 분 이내의 전파일을 표시합니다.

관련 항목
chflags(1), chmod(1), cvs(1), locate(1), whereis(1), which(1), xargs(1), stat(2), fts(3), getgrent(3), getpwent(3), strmode(3), re_format(7), symlink(7)

표준
find 유틸리티의 문법은 p1003.2 의 사양으로 결정된 문법의 슈퍼 세트입니다. 전 1 캐릭터 옵션과 -iname, -inum, -print0, -delete, -ls, -regex 의 프라이머리는 p1003.2 의 확장입니다.

옛날은 -d, -h, -x 의 옵션은 각각 -depth, -follow, -xdev 의 프라이머리를 이용해 실장되고 있었습니다. 이러한 프라이머리는 항상 실로 평가되고 있었습니다. 이러한 프라이머리는 탐색이 시작되기 전에 효과를 주는 진짜 글로벌 변수였으므로, 몇개의 합법적인 expression 가 예기치 않은 결과가 되었습니다. 일례로서 -print -o -depth 의 expression 가 있습니다. -print 하지만 항상 실로 평가되기 (위해)때문에 표준의 평가의 차례에서는 -depth (은)는 결코 평가되지 않을 것입니다만, 그렇지는 않았습니다.

연산자의 -or 하 -o (으)로서 실장되고 있었습니다. 연산자의 -and 하 -a (으)로서 실장되고 있었습니다.

옛 실장에서는 exec (와)과 -ok 의 프라이머리에서는, tility 명이나 그 인수중에 있어, 공백 이외의 캐릭터가 전후에 계속된다 “{}” (을)를 옮겨놓지 않았습니다. 이 버젼에서는 utility 명이나 그 인수의 어느 장소에 “{}” 하지만 나타나도 옮겨놓습니다.

-E 옵션은, grep(1) 및 sed(1) 의 유추로부터 실장되었습니다.

버그
find 에 의해 사용되는 특수 캐릭터는 많은 쉘에 있어서도 특수 캐릭터입니다. 특히 “*”, “[”, “”], “”?, “(”, “”), “”!, “\”, “”; (은)는, 쉘로부터 이스케이프 되지 않으면 되지 않을 것입니다.

옵션과 파일명과의 사이 및 파일명과 expression (와)과의 사이를 단락짓는 딜리미터가 존재하지 않으므로, 파일명에 옵션으로 잘못아는 것 같은 것 ( -xdev (와)과 같은 것)이나, expression (으)로 잘못아는 것 같은 것 ( ~! (와)과 같은 것)을 지정하는 것은 어렵습니다. 이러한 파일명을 지정하는 경우는 -f 옵션을 사용하는지, getopt(3) 그리고 사용되는 옵션지정의 종료 기호 “- -” (을)를 사용합니다.

-delete 프라이머리는, 파일 시스템 트리의 검색 순서에 영향을 준다 다른 옵션과는 충분히는 연계하지 않습니다.

역사
find 명령은 AT&T UNIX (으)로부터 등장했습니다.