쉘 스크립트 - 4
find
- 사용자가 지정한 기준에 따라 시스템 디렉터리 트리를 검색하여 파일을 찾는 명령어
- 사용법: find 옵션 검색경로 표현식
-> find는 사용자가 필요하는 조건으로 옵션이 아닌 표현식으로 제공한다.
표현식의 종류: 테스트, 연산자, 액션, 옵션
- 표현식_테스트
시간: 현재시각을 기준으로 검색(하지만 해당 분, 해당 일에만 검색한다. 입력조건시간~현재이나 과거~입력조건시간과 같이 기간을 검색하지 못하는 것 같다)
-amin, -atime, -cmin, -ctime, -mmin, -mtime
최신파일 검색: 명시한 파일을 기준으로 보다 최근에 접근/수정/변경을 수행한 파일을 검색
-anewer : 명시한 파일보다 최근 접근한 파일검색
-cnewer : 명시한 파일보다 최근 변경한 파일검색
-newer : 명시한 파일보다 최근 수정한 파일검색
-newer옵션 : 옵션을 기준으로 명시한 파일보다 최근 수정한 파일검색(옵션: a: 엑세스 시간, c: inode 상태변경시간, m: 수정시간)
-> inode는 stat 파일명령으로 검색가능
** 변경과 수정의 차이
- 내용변동이 일어날 경우(파일 내용 수정, 파일 복사 등): 파일 변경과 파일 수정이 일어남
- 파일명만 변경할 경우: 파일 변경만 일어남
파일 권한: 검색 경로에서 파일권을 만족하는 파일 검색
-perm mode : 명기한 권한(mode)과 동일한 파일 검색
-perm -mode : 명기한 권한(mode)을 포함한 파일 검색
-perm /mode : 명기한 권한(mode)을 개별 그룹(소유자, 그룹, 기타)중 한개라도 권한이 일치하는 파일 검색
-readable : 명령어를 입력하는 사용자가 읽을 수 있는 파일 검색
-writable : 명령어를 입력하는 사용자가 수정할 수 있는 파일 검색
-executable : 명령어를 입력하는 사용자가 실행할 수 있는 파일 검색
그룹 및 사용자: 그룹ID, 그룹명, 사용자 ID, 사용자명을 기준으로 검색(그룹ID, 사용자ID는 숫자 값을 가진다)
-gid : 그룹ID가 동일한 파일 검색
-group : 그룹명과 동일한 파일 검색
-nogroup : 시스템에 존재하지 않는 그룹ID를 가지고 있는 파일 검색
-uid : 사용자 ID가 동일한 파일 검색
-user : 사용자명과 동일한 파일 검색
-nouser : 시스템에 존재하지 않는 사용자ID를 가지고 있는 파일 검색
파일명: 파일의 이름을 패턴으로 검색
-name : 패턴과 일치하는 파일 검색
-lname : 패턴과 일치하는 심볼릭 링크 검색
-iname : 대소문자 구분없이 패턴과 일치하는 파일 검색
-inum : 입력한 Inode와 동일한 Inode를 가지는 파일 검색
-iregex : 대소문자 구분없이 패턴과 일치하는 경로 검색
-samefile : 지정한 파일의 Inode와 동일한 Inode를 가지는 파일과 심볼릭 링크 검색(심볼릭 링크도 검색하려면 L옵션 필요)
파일경로: 입력한 패턴을 만족하는 경로가 존재하는 파일들을 검색(단, 파일도 경로이기 때문에 패턴이 파일명과 일치해도 검색결과로 나온다)
-path : 패턴과 일치하는 경로 검색
-ipath : 대소문자를 부분하지 않고 패턴을 만족하는 경로 검색
파일타입 : 파일 타입을 기준으로 검색한다
-type : 파일타입과 동일한 파일을 검색
ex) b:블록, c:문자, d:디렉터리, p:파이프, f:일반파일, l:심볼릭링크, s:소켓
기타
-empty : 파일크기가 0인 파일을 검색
-used : '입력한 숫자'일 안에 access한 파일 검색
- 표현식_연산자
( 식 ) : 표현식을 묶을때 사용(단 특수문자이기 때문에 \를 붙여야함, ex: \( 식 \) )
!식 : 식의 반대결과를 출력(= -not 식)
식1 식2 : and 연산 수행(= 식1 -a 식2)
식1 -o 식2 : or 연산 수행
식1, 식2 : 식을 순차적으로 수행하며, 출력되는 결과는 식2만 출력됨(둘 다 출력하려면 -printf 혹은 -fprintf 옵션필요)
- 표현식_액션
테스트와 같은 표현식을 통해 검색된 파일을 인자로 실행/출력하는 명령어
-delete : 표현식에 의해 검색되는 파일을 삭제
-exec 명령어 {}; : 표현식에 의해 검색되는 결과를 인수로 받아 -exec 다음 명령어를 실행함. 이때 인수로 받은 검색결과는 {}로 표현하며, ;앞에 \를 붙여 사용해야한다.
ex) find . 'aa.txt' -exec grep aa {} \;
-exedir 명령어 {}; : -exec와 유사한 명령어이나, 서브디렉터리부터 검색하여, 결과값이 파일명만 출력된다
-ok 명령어 {}; : -exec와 유사한 명령어이나, 실행 전 사용자에게 질의하여 실행함
-prune : 검색한 패턴이 디렉터리일 경우, 하위 디렉터리의 파일은 검색하지 않음
결과 출력 관련 액션
-ls : 표현식 결과를 ls -l 을 실행한 결과와 유사한 형식으로 출력
ex) find . -name "a*" -ls
- 표현식_위치옵션
-maxdepth : 명시한 level의 디렉터리 레벨까지 파일을 검색, 현재 경로는 1이고, 2명 현재결로 하위경로를 의미
ex) find . -maxdepth 1 -name "a*"
-mindepth : 명시한 level의 디렉터리 레벨부터 파일을 검색
-mount : 마운트된 저장장치를 검색대상에서 제외(ex: USB, CD-ROM)
-version : 명령어의 버전을 보여줌
-help : 명령어의 사용법을 보여줌
- 옵션
심볼릭 링크
-P : 기본 옵션, 검색하는 파일이 심볼릭링크일때 심볼릭링크가 가리키는 대상의 파일을 검색
-L : 검색하는 파일이 심볼릭링크일때 심볼릭링크가 가리키는 대상이 아닌 심볼릭 링크 자체를 대상으로 검색
(검색대상 출력 시, 심볼릭 링크의 타겟이 아닌 심볼릭링크를 검색결과로 출력한다)
디버그: find 명령어가 정상적으로 수행하지 못하는 이유를 분석할 수 있는 디버그 옵션
-D help : 디버그 옵션에 대한 도움말
-D tree : 검색을 위한 표현식 트리를 실행하기 전 원래의 최적화된 형태의 식으로 보여줌
-D search : 디렉터리 트리를 자세하게 탐색, 어떠한 과정으로 파일이 검색되는지 확인 가능
-D stat : stat나 lsstat같은 system call이 이루어지는(필요한) 파일을 검사할 때 메세지를 보여줌
-D rates : 표현식이 얼마나 성공했는지 요약해서 보여준다
-D opt : 표현식의 최적화와 관련된 정보를 보여줌. 아래의 레벨옵션과 같이 사용하며, 표현식의 실행순서가 어떻게 최적화되어 실행되는지 알려준다
레벨: 쿼리 최적화를 활설화, 실행속도를 높이기 위해 테스트 순서를 변경한다
-O0 : 최적화 수준 1과 같음(이라고 하는데 정말그럴까..)
-O1 : 기본적 최적화 수준, 파일이름을 기반으로하는 테스트(옵션)가 먼저 수행되도록 식 변경
-O2 : -name 테스트 이후 -type 테스트 수행
-O3 : -a와 -o옵션과 같이 사용하며, -o의 경우 성공할 수 잇는 표현식이 더 빨리 평가되며, -a의 경우 실패할 수 있는 표현식이 더 빨리 평가된다
'Study > Shell' 카테고리의 다른 글
쉘 스크립트 - 6 (0) | 2021.07.28 |
---|---|
쉘 스크립트 - 5 (0) | 2021.07.23 |
쉘 스크립트 - 3 (0) | 2021.06.23 |
쉘 스크립트 - 2 (0) | 2021.06.06 |
쉘 스크립트 - 1 (0) | 2021.06.02 |