find
find 경로 검색조건 [동작]
경로
파일을 찾을 디렉토리의 절대, 또는 상대 경로
/etc /etc 디렉토리에서 찾기 시작(절대 경로)
~ 홈 디렉토리에서 찾기 시작
. 현재 디렉토리에서 찾기 시작
/ /(root)디렉토리에서 찾기 시작(전체 파일 시스템 검색)
unix unix디렉토리에서 찾기 시작(상대 경로)
검색조건
파일을 찾기 위한 검색 기준, and, or을 이용하여 조건 결합 가능
-name [파일 이름] filename 특정 파일명에 일치하는 파일 검색, 메타문자도 가능하나, " " 안에 있어야 한다.
-type [파일 종류] 특정 파일 종류에 일치하는 파일 검색(f, d)
-mtime [+ | -]n [수정시간] 수정시간이 +n일보다 오래되거나, -n일보다 짧거나 정확히 n일에 일치하는 파일 검색
-atime [+ | -]n [수정시간] 수정시간이 +n일보다 오래되거나, -n일보다 짧거나 정확히 n일에 일치하는 파일 검색
-user loginID [사용자 ID] loginID가 소유한 파일 중 모든 파일 검색
-size [+ | -]n [파일 크기] +n일보다 크거나, -n보다 작거나, 정확히 크기가 n인 파일 검색(n=512 bytes)
-newer [기준 시간] 기준 시간보다 이후에 생성된 파일 검색
-perm [사용 권한] 사용 권한과 일치하는 파일 검색(8진수)
파일 종류 검색
문자 | 파일 종류 | 문자 | 파일 종류 |
d | 디렉토리 파일 | b | 블록장치 특수파일 |
f | 일반 파일 | c | 문자장치 특수파일 |
l | 심볼릭 링크 파일 | s | 소켓 파일 |
검색 조건의 결합 기호
- -a: and(기본) -a는 생략 가능하다.
- -o: or
- -!: not
mtime의 시간 표현 방법
- -n: n일 이내, n*24시간 전부터 현재까지 마지막으로 수정(또는 접근)된 파일
- n: n일 전. 즉 (n+1)*24시간 전부터 n*24시간 전까지 최종 수정(또는 접근)된 파일
- +n: n일 이후, 즉 (n+1)*24시간 이전에 마지막으로 수정 또는 접근된 파일
동작
파일의 위치를 찾은 후 수행할 동작 지정, 기본 동작은 파일의 절대 경로를 화면에 출력
-exec 명령 {} \; 검색된 파일은 {} 위치에 적용되고, exec 옵션은 \;으로 끝남, exec는 이후에 지정한 명령 수행
-ok 명령 {} \; exec의 확인모드 형태, 사용자의 확인을 받아야 명령을 적용(rm -i)
-print 화면에 경로명을 출력(기본 동작)
-ls 긴 목록 형식으로 검색 결과를 출력
실습1
/tmp/find_ex로 이동
1. 파일 이름이 file로 시작하는 모든 파일, 총 몇 개인가?
find -name file* | wc -l -> 3
2. 파일 이름이 a, b, c 중 하나로 시작하는 파일
find -name '[abc]*'
3.디렉토리
find -type d
4. 수정 시각이 1일 이내인 모든 파일
find -mtime -1 *
5. 파일 소유자가 jhkim인 모든 파일
find -user jhkim
6. file1보다 나중에 수정된 모든 파일
find -type f -newer file1
7. 접근권한이 755인 모든 파일
find -perm 755
실습2
cd /tmp/wild4
1. 파일 이름이 13_20으로 끝나는 모든 파일. 총 몇 개인가?
find -name '*13_20' | wc -l300
2. 디렉토리 이름이 01-11 ~ 01-12로 끝나는 모든 디렉토리(1월11일 ~ 1월 12일). 총 몇 개인가?
find -type d -name '*01-1[12]' | wc -l
3. 수정된 시각이 1일 이내(24시간 이내)인 모든 파일
find -mtime -1
4. 수정된 시각이 2일 이내(48시간 이내)인 모든 파일
find -mtime -2
5. 수정된 시각이 3일 이상(72시간 이상)경과되면서 30일 이내의 모든 파일
find -mtime +3 | head
/apnic-2016-02-01
./apnic-2016-02-01/timestamp-07_40
./apnic-2016-02-01/timestamp-18_00
./apnic-2016-02-01/timestamp-07_20
./apnic-2016-02-01/timestamp-13_40
./apnic-2016-02-01/timestamp-22_00
./apnic-2016-02-01/timestamp-05_40
./apnic-2016-02-01/timestamp-08_20
./apnic-2016-02-01/timestamp-12_00
6. 수정된 시각이 3일 이상(72시간 이상)경과되면서 30일 이내인 파일 중 파일 크기가 50bytes보다 큰 파일
find -mtime +3 -mtime -30 -size +50c
./apple-2016-02-25
./candy-2016-02-20
7. 파일 소유자가 jhkim이 아닌 모든 파일
find ! -user jhkim
./apple-2016-02-22
./apple-2016-02-23
./apple-2016-02-20
./apple-2016-02-21
8. 파일 크기가 20bytes보다 큰 일반 파일의 내용을 모두 화면에 출력(-size 사용하여 크기 지정할 때 -c 이용)
find -type f -size +20c -exec cat {} \;
This is file timestamp-23_20.
This is file timestamp_23_40.
9. 파일 크기가 20bytes보다 작고 0보다 큰 일반 파일의 내용을 모두 화면에 출력
find -type f -size +0c -size -20c -exec cat {} \;
cat: ./candy-2016-01-01/timestamp-01_40: 허가 거부
01_20
10. 파일 크기가 20bytes보다 작고 0보다 큰 일반 파일의 내용을 모두 화면에 출력하되, 오류 메세지는 버린다.
find -type f -size +0c -size -20c -exec cat {} \; 2>/dev/null
01_20
find -size -c에서 -c는 필수가 아니다. 기본 지정은 kilobyte로 되어 있어서 -c로 형식을 지정하지 않으면 -k로 인식한다.
지정 옵션은 -c -k -M -G가 있다.
'UNIX 시스템' 카테고리의 다른 글
Internet, Communication - 11주차 수업 - 2 (0) | 2023.05.31 |
---|---|
File archive / Compress - 11주차 수업 - 1 (0) | 2023.05.30 |
cut - 10주차 수업 - 1 (0) | 2023.05.29 |
Filter - 9주차 수업 - 1 (0) | 2023.05.28 |
i - node 8주차 수업 - 2 (0) | 2023.05.26 |