shell_script

shell 기본 find

sysman 2021. 7. 29. 12:43

 

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