find [대상경로] [표현식]
find [옵션] [대상경로] [표현식]
1. 테스트
1) 시간 관련
테스트 | 설명 |
-amin n | 현재시각을 기준으로 n분전에 액세스된 파일을 찾아줌 |
-atime n | 현재시각을 기준으로 n*24시간 전에 액세스 된 파일 찾음 |
-cmin n | 현재시각을 기준으로 n분 전에 이름이 변경된 파일 찾음 |
-ctime n | 현재시각을 기준으로 n*24시간 전에 이름이 변경된 파일찾음 |
-mmin n | 현재시각을 기준으로 n분 전에 내용이 수정된 파일 찾음 |
-mtime n | 현재시각을 기준으로 n*24시간 전에 내용이 수정된 파일을찾음 |
2) 최신 파일 검색
테스트 | 내용 |
-anewer file | 명시된 파일보다 최근에 접근한 파일을 찾아줌 |
-cnewer file | 명시된 파일보다 최근에 변경된 파일을 찾아줌 |
-newer file | 명시된 파일보다 최근에 수정된 파일을 찾아줌 |
-newerXY file | 명시된 파일의 속성보다 최근에 수정된 파일을 찾아줌, 파일 속성은 XY로 표시하며, 다음과 같은 속성이 있으며, 속성 B는 리눅스에서 사용할 수 없음 a 파일 참조의 액세스 시간 B 파일 참조의 탄생 시간 c inode 상태 변경 시간참조 m 파일 참조의 수정 시간 |
변경과 수정의 차이
내용 변동 없이 파일명만 바뀌면 변경은 일어나도 수정이 되지 않음
-newerXY 로 XY는 파일속성 (a,B,c,m 사용)
3) 파일 권한 테스트
테스트 | 내용 |
-perm mode | 명시된 파일 권한과 동일한 파일을 검색 |
-perm -mode | 명시된 파일 권한이 포함된 파일을 검색 |
-perm /mode | 명시된 파일 권한을 소유자, 그룹, 기타로 구분하여 세 개의 권한 중 하나라도 동일한 파일을 검색 |
-perm +mode | 더이상 사용되지 않으며, 대신 -perm /mode가 +mode를 대신함 |
-readable | 로그인한 사용자가 읽을 수 있는 파일을 검색 |
-writeable | 로그인한 사용자가 쓸 수 있는 파일을 검색 |
-executable | 실행 권한이 있는 파일만 검색 |
4) 그룹 및 사용자 관련 테스트
테스트 | 내용 |
-gid n | 그룹 ID가 명시한 그룹 ID n과 동일한 파일 검색 |
-group gname | 그룹명이 명시한 그룹명 gname과 동일한 파일 검색 |
-nogroup | 존재하지 않은 그룹 ID 를 가지고 있는 파일 검색 |
-nouser | 존재하지 않는 사용자ID를 가지고 있는 파일 검색 |
-uid n | 사용자ID가 명시한 사용자ID n과 동일한 파일 검색 |
-user uname | 사용자명이 명시한 사용자명 uname과 동일한 파일 검색 |
5) 파일명 관련 테스트
테스트 | 설명 |
-iname pattern | 대소문자 구분없이 패턴과 일치하는 파일 검색 |
-inum n | 파일의 Inode 번호 n을 갖는 파일 검색 |
-lname pattern | 패턴과 일치하는 심볼릭 링크 검색 |
-name pattern | 패턴과 일치하는 파일 검색 |
-regex pattern | 패턴과 일치하는 경로 검색, Emacs 정규 표현식이 기본값이며, -regextype 옵션을 사용하여 변경할 수 있음 |
-iregex pattern | 대소문자 구분없이 패턴과 일치하는 경로 검색 |
-samefile name | 파일명과 동일한 파일 및 심볼릭 링크 검색, 심볼릭 링크 검색을 위해서는 -L 옵션을 함께 사용 |
6) 파일 경로 테스트
테스트 | 설명 |
-ipath pattern | 대소문자를 구분하지 않고 패턴과 일치하는 경로를 검색 |
-iwholename pattern | -ipath 테스트와 동일하며, -ipath 테스트보다 이식성이 떨어짐 |
-links n | N개의 링크를 가지고 있는 경로를 검색 |
-path pattern | 패턴과 일치하는 경로를 검색 |
-wholename pattern | -path 테스트와 동일하면 -path 테스트보다 이식성이 떨어짐 |
f로 시작해서 t로 끝나는 파일 검색
링크를 2개 가지고 있는 경로검색
7) 파일 타입 테스트
테스트 | 내용 |
-fstype type | BSD 계열의 운영체제에서 지원되며, -type 테스트와 유사한 기능을 제공 |
-type c | 명시한 파일 타입과 동일한 파일을 검색, 사용 가능한 파일 타입 b:블록 c: 문자 d:디렉토리 p:명명된 파이프 f:일반파일 l : 심볼릭 링크 s: 소켓 D:door(Solaris) |
-xtype c | -type 테스트와 동일하며, 심볼릭 링크를 검색할 경우 -L 옵션과 함께 사용 |
-context pattern | 패턴과 일치되는 보안 컨텍스트를 가진 파일을 검색, SELinux가 있는 페도라 계열 리눅스에서만 사용가능 |
-xtype 사용시 -L 옵션 사용
8) 기타 테스트
테스트 | 설명 |
-true | 항상 true 리턴함 |
-false | 항상 false 리턴함 |
-empty | 파일 사이즈 0인 파일을 검색 |
-size n[cwbkMG] | 명시한 파일 사이즈에 해당하는 파일을 검색 사이즈 단위 b : 512바이트 블록 c : 바이트 w: 2바이트 k : 킬로바이트 M: 메가바이트 G : 기가바이트 |
-used n | 파일이 변경된 후 n일에 마지막으로 액세스한 파일을 검색 |
false는 결과값을 보여주지 않음
2. 연산자
연산자 | 설명 |
(expr) | 우선순위나 표현식을 그룹핑할 경우 사용되며 백슬래시 \와 함께 사용 |
! expr | 표현식의 반대 결과를 리턴 |
-not expr | ! expr과 같은 결과를 리턴 |
expr1 expr2 | AND 연산을 수행, expr1이 false면 expr2는 평가되지 않음 |
expr1 -a expr2 | expr1 expr2와 동일 |
expr1 -and expr2 | expr1 expr2와 동일하지만 POSIX 호환은 안됨 |
expr1 -o expr2 | OR연산을 수행하며, expr1이 true면 expr2는 평가되지 않음 |
expr1 -or expr2 | expr1 -o expr2와 동일하지만 POSIX 호환은 안됨 |
expr1 , expr2 | expr1, expr2를 각각 수행되며, 결과는 expr2에 해당하는 것만 출력됨, 함께 줄력을 하기 위해서는 -printf나 -fprintf를 함께 사용 |
3. 액션
액션 | 설명 |
-delete | 표현식에 의해 검색된 파일을 삭제 |
-exec command { } ; | 표현식에 의해 검색된 파일을 인수로 받아 -exec 다음의 명령어를 수행함. 인수로 받을 결과값은 중괄호 { } 로 표현되며 세미콜론; 은 역슬래시\와 함께 사용 |
-exec command { } + | -exec와 동일하나 결과값을 연 이어서 보여줌 |
-execdir command { } ; | -exec와 유사하나 서브 디렉토리부터 검색하기 때문에 결과값은 파일명만 출력 |
-execdir command { } + | -execdir과 동일하나 결과값을 연 이어서 보여줌 |
-ok command { } ; | -exec와 유사하지만 사용자에게 실행여부를 확인 후 실행 |
-okdir command { } ; | -execdir와 유사하지만 -ok와 같은 방식으로 사용자에게 실행 여부를 확인 후 실행 |
-prune | 검색한 패턴이 디렉토리인 경우, 하위 디렉토리의 파일은 검색하지 않음 |
-quit | -quit 앞에 만난 표현식에 해당하는 파잉ㄹ이 검색되면 검색을 종료함 |
expression.txt에서 CPU를 {}에 대입시켜 검색함
-ok 옵션은 출력값을 표시할 것인지 물어봄( 잘안쓰일듯)
find . 은 현재폴더에서만 검색(하위까지 하지 않음)
텍스트 파일이나 p로 된 파일을 만나면 검색종료
2) 결과출력 관련
옵션 | 내용 |
-fls file | 표현식에 의해 검색된 파일의 결과를 명시한 파일로 ls -l 을 실행한 것과 유사한 결과를 저장함 |
-fprint file | 표현식에 의해 검색된 파일의 결과를 명시한 파일에 저장 |
-fprint0 file | 표현식에 의해 검색된 파일의 결과를 명시한 파일에 뉴라인이나 공백없이 저장 |
-printf format | 역슬래시\ 와 퍼센트%로 된 표준 출력 포맷에 맞게 검색된 파일 결과를 보여줌 |
-printf file format | -printf와 비슷하지만 -fprint와 같이 검색된 파일을 명시한 파일에 저장 |
-ls | 표현식에 의해 검색된 파일의 결과를 ls -l을 실행한 것과 유사한 결과를 보여줌 |
-print; | 표현식에 의해 검색된 파일의 결과를 보여줌 |
-print0 | 표현식에 의해 검색된 파일의 결과를 뉴라인없이 보여줌 |
특수기호 포맷
포맷 의미 | 포맷 의미 | 포맷 의미 |
\a 알람 | \r 캐리지 리턴 | \NNN 8진 아스키코드 |
\b 백스페이스 | \t 수평탭 | A'\' \ 뒤는 일반 문자 취급 |
\c 클리어 | \v 수직탭 | %% 퍼센트 기호 |
\f 폼피드 | \O 아스키 NUL | |
\n 뉴라인 | \\ 백슬래시 |
파일속성 포맷
포맷 의미 | 포맷 의미 |
%a ctime의 파일 액세스 시간 | %l 심볼릭 링크 |
%Ak k에 의한 파일 액세스 시간 | %m 파일 권한(8진수 기준) |
%b 사용된 디스크 크기(바이트 기준) | %M 파일 권한(문자열 기준) |
%c 파일의 마지막 상태 변경 시간 | %n 하드링크 수 |
%Ck k에 의한 파일의 마지막 상태 변경 시간 | %p 경로를 포함한 파일명 |
%d 파일 깊이(depth) | %P 현재 경로가 없는 파일명 |
%D 파일 장치 번호 | %s 파일 사이즈(바이트 기준) |
%f 파일명 | %S 파일의 희소성 |
%F 파일 시스템 유형 | %t 파일의 마지막 수정 시간 |
%g 파일 그룹명 또는그룹 ID | %Tk K에 의한 파일의 마지막 수정시간 |
%G 파일의 그룹 ID | %u 파일의 소유자명 |
%h 파일명을 제외한 파일 경로 | %U 파일의 소유자 ID |
%H 명령행 인수 | %y 파일타입, U에 대한 타입이 더 있음 |
%i 파일의 inode번호 | %Y 파일타입, L, N 타입이 더 있음 |
%k 사용된 디스크 크기(킬로바이트 기준) | %Z 파일의 보안 컨텍스트 |
%f 는 파일명,
%c 는 파일의 마지막 상태 변경 시간을 의미,
\n 는 뉴라인 의미
4. 위치옵션
위치 옵션 | 내용 |
-d | FreeBSD, NetBSD, MacOS X 및 OpenBSD와의 호환성을 위한 -depth의 동의어 |
-depth | 서브 디렉토리의 파일을 먼저 검색 |
-daystart | 24시간이 아닌 해당일을 기준으로 파일 검색 -amin, -atiome, -cmin, -ctime, -mmin 및 -mtime 과 함께 사용해야함 |
-regextype type | -regex나 -iregex의 정규식 구문을 변경함, 기본 유형은 emacs이며, posix-awk, posix-basic, posix-egrep 및 posix-extended가 있음 |
-maxdepth levels | 명시한 level만큼 서브 디렉ㅌ토리의 파일까지 검색 |
-mindepth levels | 명시한 level의 서브 디렉토리부터 파일을 검색 |
-mount | USB나 CD-ROM과 같은 시스템의 파일을 검색하지 않음 |
-warn, -nowarn | 경고 메세지를 켜거나 끔 , 명령줄 사용법에만 적용되며 디렉토리를 검색할 때 발견되는 조건에는 적용되지 않으며, 표준 입력이 tty이면 -warn, 그렇지 않으면 -nown에 해당함 |
-help, --help | find 사용법을 보여줌 |
-version, --version | find 버전을 보여줌 |
기본은 현재 디렉토리부터 검색
-depth 는 디렉토리부터 검색됨
daystart 는 현재 시간 기준으로 현재 날짜에 수정된 파일 검색
POSIX 기본(emacs) 사용했을때와 타입(posix-awk, posix-basic, posix-egrep, posix-extended)을 지정했을때
명시한 레벨만큼 서브 디렉토리 파일까지 검색
마운트된 file system이 없으므로 아무것도 안나옴
5. find 옵션
1) 심볼릭 링크 관련
옵션 | 내용 |
-P | 파일을 검사할때 파일이 심볼릭 링크인 경우, 심볼릭 링크 자체의 속성을 검사하며, find의 기본 옵션, 따라서 옵션을 생략하면 -P옵션으로 적용됨 |
-L | 파일을 검사할때 파일이 심볼릭 링크인 경우, 심볼릭 링크에 연결된 파일의 속성을 검사하며, 검사되는 모든 파일 목록을 보여줌 |
-H | 팡리을 검사할때 심볼릭 링크인 경우, 심볼릭 링크 자체의 속성을 검사하나, 명령 행에 지정된 파일이 심볼릭 링크인 경우, 심볼릭 링크에 연결된 파일의 속성을 검사함 |
file 속성 확인
파일 내용의 검색
2) 디버그 관련 옵션
옵션 | 내용 |
-D help | 디버깅 옵션을 설명 |
-D tree | 표현식 트리를 원래의 최적화된 형태로 보여줌 |
-D search | 디렉토리 트리를 자세하게 탐색 |
-D stat | stat나 lstat와 같은 시스템 호출이 필요하 파일을 검사핼때 메세지를 보여줌 |
-D rates | 표현식이 얼마나 성공했는지를 요약해서 보여줌 |
-D opt | 표현식 tree최적화와 관련된 진단 정보를 보여줌, 최적화와 관련된 -O 옵션을 참조하여 사용 |
디렉토리 트릐 자세히 탐색
-D rates 표현식
-D opt 표현식 tree 최적화 정보
3) 레벨 관련 옵션
- find 사용하여 파일 검색 때 사용된 전반적인 테스트의 효과를 유지하면서 실행 속도를 높이기 위해 테스트 순서 변경
옵션 | 내용 |
-O0 | 최적화 수준1과 같음 |
-O1 | 기볹거 최적화 수준으로, 파일이름 (ex: -name 및 -regex)을 기반으로 하는 테스트가 먼저 수행되도록 식 순서가 바뀜 |
-O2 | -type이나 -xtype과 함께 사용할때 -name테스트한 후 -type테스트를 수행 |
-O3 | 전체 비용 기반 쿼리 최적화 프로그램이 활성화됨. -o 의 경우 성공할 수 있는 표현식이 더 빨리 평가되고 -a의 경우실패할 수 있는 표현식이 더빨리 평가됨 |
최적화 수준 1과 동일
파일 권한, 파일명 순서로 검색하면 파일명, 권한 순서로 변경됨
파일 명을 찾고 그 다음 단계로 넘어감
파일명 찾고 바로 이어 파일 타입을 평가한 후 그다음 단계로 넘어감
-O3 은 전체 비용기반 쿼리 최적화 프로그램 활성화
-a 연산 평가율 0.08
-o 연산 평가율 0.9
'shell_script' 카테고리의 다른 글
shell 기본 sed (0) | 2021.07.30 |
---|---|
shell 기본 awk (0) | 2021.07.29 |
shell 기본 grep (0) | 2021.07.27 |
shell 기본 명령문 (0) | 2021.07.27 |
shell 명령어 (0) | 2021.07.26 |