| HOME / 정보공유 / AIX 명령어 모음

find
find find 명령 목적 대응하는 표현식이 있는 파일을 찾습니다. 구문
find Path ... [ Expression ]
설명
find 명령은 지정된 각 Path 매개변수에 대해 디렉토리 트리를 반복적으로 탐색하며, 다음 텍스트에 제공된 항목을 사용하여 작성된 부울 표현식에 대응하는 파일을 찾습니다. find 명령이 반복적으로 디렉토리 구조를 하향 이동할 때 이 명령은 현재의 계층에 기호적으로 링크되어 있는 디렉토리로 내려가지는 않습니다. find 명령으로부터의 출력은 Expression 매개변수에 지정된 항목에 따라 다릅니다.
find 명령은 4.3 BSD 단축 찾기 구문을 지원하지 않습니다.
표현식 항목
다음 부울 표현식과 변수는 Path와 Expression 매개변수에 정의된 대로 find 명령의 탐색 경계를 설명합니다.
주: 다음 정의에서, Number 변수는 +Number(Number 이상), -Number(Number 미만) 또는 Number(Number와 동일)로 표현되는 십진 정수를 지정합니다.
\( Expression \) 소괄호 내의 표현식이 참이면, 논리 값을 참으로 합니다.
-cpio Device 현재 파일을 지정된 장치에 cpio 명령 형식으로 기록합니다.
-depth 논리 값을 항상 참으로 합니다. 디렉토리 자체가 영향을 받기 전에 디렉토리 내의 모든 항목이 영향을 받을 수 있도록 디렉토리 계층 하향 이동을 유발합니다. 이것은 find 명령을 cpio 명령과 함께 사용하여 디렉토리에 들어 있는 파일을 쓰기 사용권한 없이 전송할 때 유용합니다.
-exec Command 지정한 명령이 수행되어 종료 상태로서 0 값을 리턴하면 논리 값을 참으로 합니다. 지정된 명령의 끝에는 인용되거나 에스케이프된 세미콜론이 있어야 합니다. 명령 매개변수 {}(중괄호)는 현재의 경로 이름으로 대체됩니다.
-fstype Type 파일이 소속되어 있는 파일 시스템이 지정된 유형이면 참 값으로 평가됩니다. 여기서 Type 변수는 jfs(저널 파일 시스템) 의 값 또는 nfs(네트워크 파일 시스템)의 값을 갖습니다.
-group Group 파일이 지정된 그룹에 속할 경우에 논리 값을 참으로 합니다. Group 변수의 값이 숫자이고 /etc/group 파일에 나타나지 않으면, 그 값은 그룹 ID로 해석됩니다.
-nogroup 파일이 /etc/group 데이터베이스에 있지 않은 그룹에 속할 경우 논리 값을 참으로 합니다.
-inum Number 파일에 Number 변수 값에 대응하는 i 노드가 있을 경우에 논리 값을 참으로 합니다.
-links Number 파일에 지정된 수의 링크가 있으면 논리 값을 참으로 합니다. 링크 설명에 대해서는 ln 명령을 참조하십시오.
-ls 논리 값을 항상 참으로 합니다. 현재 경로 이름이 연관된 통계와 함께 인쇄되도록 합니다. 이러한 통계에는 다음 사항이 포함됩니다.
i 노드 번호
킬로바이트(1024 바이트) 단위의 크기
보호 모드
하드 링크의 수
사용자
그룹
바이트 단위의 크기
수정 시간
파일이 특수 파일이면, 크기 필드에는 주 및 부장치 번호가 포함됩니다. 파일이 심볼 링크이면, -> 기호가 앞에 오는 링크된 -to 파일의 경로 이름이 인쇄됩니다. 형식화는 ls -filds 명령과 비슷하지만 이 형식화는 ls를 실행하지 않고 내부적으로 수행되므로 보호 모드와 같은 ls 명령과의 차이점이 출력에 있을 수 있습니다.
-name File File 변수의 값이 파일 이름과 대응하는 경우에 논리 값을 참으로 합니다. 일반 쉘 파일 이름 생성 문자(sh 명령 참조)가 사용될 수 있습니다. 패턴은 따옴표로 묶여 있거나 쉘에서 find 명령이 사용될 경우, 에스케이프 문자를 사용해야 합니다. 패턴 내에서는 백슬래쉬( \ )가 에스케이프 문자로 사용됩니다. 인용부호로 묶인 경우, 총칭 문자(패턴 대응 문자)를 사용할 수 있습니다. 와일드 카드 문자의 사용에 대한 더 자세한 사항은 AIX 5L 버전 5.1 시스템 사용자 안내서: 운영 시스템 및 장치의 파일 개요에서 "와일드 카드 및 메타 문자의 패턴 대응"을 참조하십시오.
[a-z]와 같은 표현식에서, 대쉬는 현재의 배열 순서에 따라 "처음부터 끝까지"를 의미합니다. 배열 순서는 문자 범위에서 사용할 등가 클래스를 정의할 수 있습니다. 배열 순서 및 등가 클래스에 대한 더 자세한 사항은 AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 National Language Support Overview for Programming을 참조하십시오.
-newer File 현재 파일이 File 변수가 표시한 파일보다 최근에 수정된 경우에 논리 값을 참으로 합니다.
-ok Command find 명령은 사용자에게 지정된 명령을 시작해야 할지를 묻는 점을 제외하고는 -exec 표현식과 동일합니다. 긍정 응답이 명령을 시작합니다. 지정된 명령의 끝에는 따옴표로 묶인 세미콜론이나 \;(백슬래쉬)가 있어야 합니다.
-perm [ - ] OctalNumber 파일의 허용 코드가 OctalNumber 매개변수와 정확히 대응하는 경우에 논리 값을 참으로 평가합니다(파일 사용권한에 대한 설명은 chmod 명령을 참조하십시오). 선택적 -(대쉬)가 있는 경우, 최소한 이러한 사용권한이 설정되어 있으면, 이 표현식의 논리 값은 참이 됩니다. OctalNumber 매개변수는 8진수로 최대 9자입니다.
-perm [ - ] Mode 모드 인수는 파일 모드 비트를 나타내는데 사용됩니다. 형식은 chmod에 설명되어 있는 피연산자와 동일하며 다음과 같이 해석됩니다.
초기에는 템플리트의 모든 파일 모드 비트가 지워져 있다고 간주됩니다. Op 기호는 다음과 같은 기능을 갖습니다.
+
템플리트의 해당 모드 비트를 설정합니다.
-
해당 비트를 지웁니다.
=
프로세스의 파일 모드 생성 마스크의 내용에 상관없이 해당 모드 비트를 설정합니다.
- op 기호는 모드의 첫 문자일 수 없습니다. 이는 선택적 선도 하이픈과의 모호성을 방지합니다. 초기 모드에서는 모든 비트가 오프 되어 있으므로 -를 첫 문자로 사용해야 하는 상징적 모드가 없습니다.
하이픈이 생략될 경우, 파일 사용권한 비트가 결과 템플리트의 값과 정확히 일치하면 1차는 참으로 평가됩니다. 그렇지 않고 모드의 접두어가 하이픈일 경우, 최소한 결과 템플리트의 모든 비트가 파일 사용권한 비트에 설정되어 있으면 1차는 참으로 평가됩니다.
Mode 매개변수는 chmod 명령 구문과 동일합니다. 파일에 동일한 사용권한이 있으면 표현식의 논리 값은 참이 됩니다. 선택적 -(대쉬)가 있는 경우, 최소한 이러한 사용권한이 설정되어 있으면 이 표현식의 논리 값은 참으로 설정됩니다.
-print 논리 값을 항상 참으로 합니다. 현재의 경로 이름을 표시합니다. find 명령은 -exec, - ls 또는 -ok 표현식이 존재하지 않는 경우, -print 표현식을 가정합니다.
-prune 논리 값을 항상 참으로 합니다. 디렉토리인 경우, 현재의 경로 이름의 하향 이동을 중단합니다. -depth 플래그를 지정할 경우, -prune 플래그는 무시됩니다.
-size Number 파일의 길이가 지정된 블록의 Number이면(블록 당 512 바이트), 참으로 평가됩니다. 파일 크기는 비교를 위해 가장 가까운 블록으로 반올림됩니다.
-size Numberc 파일의 길이가 정확히 지정된 바이트 Number일 때 논리 값을 참으로 합니다. c를 Number 변수 끝에 추가하면 파일의 크기가 블록이 아닌 개별 바이트로 측정됨을 표시합니다.
-atime Number 파일이 Number -1에서 24시간의 Number 배수 사이에서 액세스된 경우에 논리 값을 참으로 합니다. 예를 들어, 파일이 24 - 48시간 이내에 액세스된 경우, -atime 2는 참입니다.
-ctime Number 파일 i 노드(상태 정보)가 24시간 기준의 지정된 시간 수 내에 변경된 경우, 논리 값을 참으로 합니다.
-mtime Number 파일이 Number -1에서 24시간의 Number 배수 내에 수정되었으면 논리 값을 참으로 합니다.
-type Type Type 변수가 다음 값 중 하나를 지정하는 경우에 논리 값을 참으로 합니다.
b
블록 특수 파일
c
문자 특수 파일
d
디렉토리
f
보통 파일
l
심볼 링크
p
FIFO(이름붙여진 파이프)
s
소켓
-user User 파일이 지정된 사용자에게 속하는 경우 논리 값을 참으로 합니다. User 변수의 값이 숫자이고, /etc/passwd 파일에 로그인 이름으로서 나타나지 않으면, 그 값은 사용자 ID로 해석됩니다.
-nouser 파일이 /etc/passwd 데이터베이스에 있지 않은 사용자에게 속하는 경우에 논리 값을 참으로 합니다.
-xdev 논리 값을 항상 참으로 합니다. find 명령이 Path 매개변수가 지정한 것과 다른 파일 시스템을 통과하지 못하도록 합니다.
선행이 높은 순서로 다음 연산자를 사용하여 이들 표현식을 결합할 수 있습니다.
(Expression) - 표현식과 연산자의 괄호 그룹(소괄호는 쉘에서 특수한 의미를 가지며 백슬래쉬-에스케이프 순서의 기호 조합이 필요합니다).
! Expression - 표현식의 부정('!' 는 16진 NOT 연산자입니다).
Expression[-a] Expression - 표현식의 병합(AND 연산은 두 가지 주요사항의 병렬 배치로 암시하거나 -a로 명시적으로 표현할 수 있습니다).
Expression-oExpression - 주요 사항의 대체. -o는 OR 연산자입니다. 첫번째 표현식이 참이면 두 번째 표현식의 값은 평가되지 않습니다.
주:
find와 cpio 명령을 함께 사용할 경우, cpio 명령에 -L the 옵션을 사용하면 cpio 명령의 -follow 옵션을 사용해야 하며 반대로도 마찬가지입니다. 이 두 개의 옵션을 함께 사용하지 않으면 원하지 않는 결과가 생성됩니다. 표현식이 없으면, -print를 디폴트 표현식에서 사용합니다. 예를 들어, 지정 표현식에 -exec, -ok, 또는 -print 1차가 하나도 포함되어 있지 않으면, 지정 표현식은 (given_expression) -print로 대체됩니다. -user, -group, 및 -newer 1차는 각각 해당 인수를 한 번만 평가합니다. -exec 또는 -ok에서 지정하는 명령의 사용은 동일한 파일의 다음 1차에 영향을 미치지 않습니다.
종료 상태
이 명령은 다음 종료 값을 리턴합니다.
0 모든 Path 매개변수가 성공적으로 통과되었습니다.
>0 오류가 발생했습니다.
예제
주어진 기준 파일 이름을 사용하여 파일 시스템의 모든 파일을 나열하려면, 다음과 같이 입력하십시오.
find / -name .profile -print
이것은 전체 파일 시스템을 탐색하고 .profile이라는 모든 파일의 전체 경로 이름을 기록합니다. /(슬래쉬)는 find 명령에게 루트 디렉토리 및 여기에 속한 모든 서브디렉토리를 탐색하도록 지시합니다. 시간을 낭비하지 않으려면, 파일이 있을 것이라고 생각되는 디렉토리를 지정하여 탐색을 제한하는 것이 최선입니다.
현재 디렉토리 트리에서 특정 허용 코드가 있는 파일을 나열하려면, 다음과 같이 입력하십시오.
find . -perm 0600 -print
이것은 소유자 읽기 및 소유자 쓰기 사용권한만 있는 파일 이름을 나열합니다. .(마침표)은 find 명령에게 현재 디렉토리 및 그 서브디렉토리를 탐색하도록 지시합니다. 허용 코드에 대한 자세한 정보는 chmod 명령을 참조하십시오.
여러 개의 디렉토리에서 특정 허용 코드를 지닌 파일을 탐색하려면, 다음과 같이 입력하십시오.
find manual clients proposals -perm -0600 -print
이것은 소유자 읽기와 소유자 쓰기 사용권한 및 기타 다른 사용권한을 지닌 파일 이름을 나열합니다. manual, clients 및 proposals 디렉토리와 그 서브디렉토리가 탐색됩니다. 앞의 예에서, -perm 0600은 0600과 정확히 대응하는 허용 코드가 있는 파일만 선택합니다. 이 예에서는, -perm -0600이, 0600이 표시하는 액세스 및 0600 레벨 이상의 기타 액세스를 허용하는 허용 코드가 있는 파일을 선택합니다. 이것은 또한 허용 코드 0622와 2744를 대응시킵니다.
현재 디렉토리에서 현재의 24시간중에 변경된 모든 파일을 나열하려면, 다음과 같이 입력하십시오.
find.-ctime 1 -print
여러 개의 링크가 있는 일반 파일을 탐색하려면, 다음과 같이 입력하십시오.
find . -type f
-links +1 -print
이것은 한 개의 링크 이상(-links +1)을 갖고 있는 일반 파일(-type f)의 이름을 나열합니다.
주: 각 디렉토리는 최소한 두 개의 링크를 갖고 있습니다. 상위 디렉토리의 항목과 자체의 항목 . (마침표) 항목입니다. ln 명령은 여러 개의 파일 링크에 대해 설명합니다.
경로 이름에 find가 들어 있는 액세스 가능한 모든 파일을 찾으려면, 다음과 같이 입력하십시오.
find . -name '*find*' -print
일주일간 액세스 되지 않았고 nfs를 사용하여 마운트 되지 않았으며 파일 이름이 a.out 또는 *.o인 모든 파일을 제거하려면, 다음과 같이 입력하십시오.
find / \( -name a.out -o -name '*.o' \) -atime +7 ! -fstype nfs -exec \ rm {} \;
주: -atime 표현식 내에 사용된 번호는 +7입니다. 일주일(7개의 24시간 기간) 동안 액세스 되지 않은 파일에 대해 명령을 수행하려면, 이것이 올바른 항목입니다.
SCCS라는 이름의 디렉토리 또는 SCCS 디렉토리에 있는 파일은 제외하고, 현재 디렉토리 이하에 있는 모든 파일의 경로 이름을 인쇄하려면, 다음과 같이 입력하십시오.
find . -name SCCS -prune -o -print
SCCS 디렉토리의 이름을 포함하여, 현재 디렉토리 이하에 있는 모든 파일의 경로 이름을 인쇄하려면, 다음과 같이 입력하십시오.
find . -print -name SCCS -prune
길이가 정확히 414 바이트인 모든 파일을 탐색하려면, 다음과 같이 입력하십시오.
find . -size 414c -print
사용자의 홈 디렉토리에서 .c 접미사가 있는 모든 파일을 찾아서 제거하려면, 다음과 같이 입력하십시오.
find /u/arnold -name "*.c" -exec rm {} ;
find 명령이 .c 접미사가 있는 파일을 식별할 때마다, rm 명령이 그 파일을 삭제합니다. rm 명령은 -exec 표현식에 지정되는 유일한 매개변수입니다. {}(중괄호)는 현재 경로 이름을 나타냅니다.
파일
/usr/bin/find find 명령을 포함합니다.
/bin/find find 명령에 대한 심볼 링크.
/etc/group 알려진 모든 그룹의 리스트를 포함합니다.
/etc/passwd 알려진 모든 사용자의 리스트를 포함합니다.