[1. 개요]
- 특정 파일을 찾거나, (조건에 맞춰서)
- 찾은 파일에 대해서 어떤 명령어를 수행하고자 할 때, 사용하는 명령어
[2. timestamp]
find 명령어는 오래동안 사용되지 않은 파일을 찾을 때 유용한데,
timestamp 를 이용하여 찾는다.
- atime
# access time
# 파일의 접근한 시간 - mtime
# modification time
# 파일 내용을 수정한 시간 - ctime
# change time
# ctime 은 파일의 inode 등을 변경한 시간이다.
# ex) 파일의속성, 권한, 크기, ..
find 명령어에서는 atime, mtime, ctime 을 이용하여 파일을 찾을 수 있는데,
명시할 값을 주의해야 한다.
기본적으로 time 에 오는 정수 값은 "24*n time" 을 의미한다.
- -n : 현재를 기준으로, -n 일전 까지
- n : 현재를 기준으로, -(n+1) 일 전부터 -n 일 전까지
- +n : 현재를 기준으로, -(n+1) 일 전보다 과거
대강 아래와 같다. (범위는 좀 다를 수 있음, 그냥 대략적으로 이렇다.)
-7 day | -6 day | -5 day | -4 day | -3 day | -2 day | -1 day | 현재 | |
-3 | X | X | X | X | O | O | O | O |
3 | X | X | X | X | O | X | X | X |
+3 | O | O | O | O | X | X | X | X |
[3. 기본 골격]
- find "{찾을 디렉터리 위치}" [options]
- exec {} \;
example) 가령 /home 밑에서 old.log 혹은 old.log.yyyy.mm.dd 형태의 모든 로그를 제거한다고 할 때...
- find /home -name "old.log*" -exec rm -f {} \;
- find /home -name "old.log*" -exec rm -f {} +
1) 방식의 경우, 각 파일마다 명령어를 반복하는 것으로,,
old.log , old.log.2024.06.11 , old.log.2024.06.12 가 있다면, 아래와 같이 세번의 명령어가 실행되는 것이고,
- rm -f old.log
- rm -f old.log.2024.06.11
- rm -f old.log.2024.06.12
2) 방식의 경우, 아래와 같이 한번의 명령어로 실행하는 방식이 된다.
- rm -f old.log old.log.2024.06.11 old.log.2024.06.12