OS/Linux

[LINUX] πŸ“š find λͺ…λ Ή mtime/mmin μ˜΅μ…˜ +n, -n κ°œλ… 정리

인파_ 2022. 3. 10. 15:00

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n

λ¦¬λˆ…μŠ€ νƒ€μž„μŠ€νƒ¬ν”„ 

λ¦¬λˆ…μŠ€μ—μ„œ 파일의 μ‹œκ°„ 정보(Timestamps)λ₯Ό κΈ°λ‘ν•˜λŠ”λ° inode λΌλŠ” 곳에 μ €μž₯이 λœλ‹€.

inode에 μ €μž₯λ˜λŠ” μ‹œκ°„μ •λ³΄λŠ” ctime, mtime, atime이 μ‘΄μž¬ν•œλ‹€.

$ stat [파일λͺ…]

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n

 

atime (access time, μ ‘κ·Ό μ‹œκ°„)

atime은 νŒŒμΌμ— μ ‘κ·Όν•œ μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€.

νŒŒμΌμ„ open ν•  λ•Œλ§ˆλ‹€ 갱신이 되며 vi, cat λͺ…λ ΉμœΌλ‘œ 파일 ν™•μΈμ‹œ atime의 값이 λ³€ν•œλ‹€.

$ ls -lu

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n

 

mtime (modification time, μˆ˜μ • μ‹œκ°„)

파일의 λ‚΄μš©μ΄ μˆ˜μ •λ  λ•Œ mtime μ‹œκ°„μ΄ λ³€ν•œλ‹€.

$ ls -l

 

ctime (change time, λ³€κ²½ μ‹œκ°„)

inode의 κ°’ (파일 속성, κΆŒν•œ, 크기 λ“±)이 λ³€κ²½λ˜λ©΄ ctime이 κ°±μ‹ λœλ‹€.

$ ls -lc

find νƒ€μž„μŠ€νƒ¬ν”„ μ˜΅μ…˜

λͺ‡μΌμ΄ μ§€λ‚œ 둜그 νŒŒμΌλ“€μ„ μ°Ύμ•„ μžλ™ μ‚­μ œν• λ•Œ κ°€μž₯ 많이 μ“°μ΄λŠ” μ˜΅μ…˜μ΄ λ°”λ‘œ νƒ€μž„μŠ€νƒ¬ν”„ μ˜΅μ…˜μ΄λ‹€.

λ‹€λ§Œ, κ°œλ…μ΄ ꡉμž₯히 λ‚œν•΄ν•˜κ³  μ‚¬μš©ν•˜κΈ° κΉŒλ‹€λ‘œμ›Œ μ œλŒ€λ‘œ μ •λ¦¬ν•΄λ³΄λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄μž.

 

νƒ€μž„μŠ€νƒ¬ν”„ μ˜΅μ…˜

λΆ„ λ‹¨μœ„λ‘œ μ‹œκ°„λ„ μΆ”κ°€λ‘œ find λͺ…λ Ήμ–΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

μ˜΅μ…˜ μš”μ•½
-mmin 파일의 데이터가 λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜μ • 된 μ‹œκ°„ (λΆ„ μ§€μ •)
-mtime 파일의 데이터가 λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜μ • 된 λ‚ μ§œμ™€ μ‹œκ°„ (일 μ§€μ •)
-amin 파일의 데이터에 λ§ˆμ§€λ§‰μœΌλ‘œ μ•‘μ„ΈμŠ€ ν•œ λ‚ μ§œμ™€ μ‹œκ°„ (λΆ„ μ§€μ •)
-atime 파일의 데이터에 λ§ˆμ§€λ§‰μœΌλ‘œ μ•‘μ„ΈμŠ€ ν•œ λ‚ μ§œμ™€ μ‹œκ°„ (일 μ§€μ •)
-cmin 파일 데이터 및 μƒνƒœκ°€ λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜μ • 된 μ‹œκ°„ (λΆ„ μ§€μ •)
-ctime 파일 데이터 및 μƒνƒœκ°€ λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜μ • 된 λ‚ μ§œμ™€ μ‹œκ°„ (일 μ§€μ •)

find -mtime n κ°œλ… 읡히기

νŠΉμ • 기간에 μž‘μ„±, λ³€κ²½λœ 파일 λͺ©λ‘μ„ μ‘°νšŒν•˜κ³  싢을 λ•Œ find λͺ…λ Ήμ–΄μ—μ„œ -mtimeμ˜΅μ…˜μ€ νŒŒμΌλͺ…에 μžˆλŠ” λ‚ μ§œκ°€ μ•„λ‹ˆλΌ 파일의 νƒ€μž„μŠ€νƒ¬ν”„λ‘œ νŒŒμΌμ„ κ²€μƒ‰ν•œλ‹€.

 

κΈ°λ³Έ μ‚¬μš©λ²•μ€ find -mtime n (일수)λ₯Ό μ§€μ •ν•˜λŠ”λ° (n일 μ „ = n x 24μ‹œκ°„μ „)

 

이 n(일수) 계산법 κ³Ό ν‘œν˜„λ²•μ΄ 쑰금 κΉŒλ‹€λ‘­λ‹€.

일단 일수 ν‘œν˜„μ„ λŒ€μΆ© μ •λ¦¬ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

# 만일 ν˜„μž¬μ‹œκ°„μ΄ 10μ›” 10일 이라고 κ°€μ •ν•œλ‹€λ©΄,

$ find -mtime -3 # 3일(72μ‹œκ°„)μ „ ~ ν˜„μž¬μ‹œκ°„ -> 10.7 ~ 10.10

$ find -mtime 3  # 4일(96μ‹œκ°„) μ „ ~ 3일(72μ‹œκ°„)μ „κΉŒμ§€ -> 10.6 ~ 10.7

$ find -mtime +3 # 4일(96μ‹œκ°„)전보닀 κ³Όκ±° -> ~ 10.6

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n

λͺ…λ Ήμ–΄μ—μ„œ 볼수 μžˆλ“―μ΄ n이 3 이라고 ν•΄μ„œ λ°”λ‘œ 3일전이 μ•„λ‹ˆλΌ 24μ‹œκ°„μ΄ μΆ”κ°€ λ²”μœ„μ μœΌλ‘œ 계산됨을 λ³Ό 수 μžˆλ‹€. 

 

μ΄λŠ” λ¦¬λˆ…μŠ€μ—μ„œ μ‹œκ°„μ„ μ§€μ •ν•΄μ„œ 검색할 λ•ŒλŠ” κ³ μ •λœ λ‚ μ§œμ™€ μ‹œκ°„ κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•˜λŠ” μ§€κΈˆμ˜ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ νƒ€μž„μŠ€νƒ¬ν”„μ˜ 24μ‹œκ°„ λ‹¨μœ„λ‘œλ§Œ 검색을 ν•  수 μžˆλ‹€.

 

예λ₯Ό λ“€μ–΄,

"2021λ…„ 1μ›” 1일 νŒŒμΌμ„ 찾아라!" λŠ” λΆˆκ°€λŠ₯ν•˜κ³ ,

"μ§€κΈˆ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ 24μ‹œκ°„ 전에 νŒŒμΌμ„ 찾아라" 둜 λͺ…령을 이행해야 λœλ‹€.

# 4일 μ „λΆ€ν„° 2일 μ „κΉŒμ§€ κ°±μ‹ λœ 파일 λͺ©λ‘μ„ ν‘œμ‹œ
$ find . -name "*.log" -mtime -4 -mtime +1 -print

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n


μ‹œκ°„ λ²”μœ„ n 정리

예제 μ½”λ“œλ₯Ό 봐도 ν–‡κΉ”λ¦°λ‹€. λ„ν‘œλ‘œ 보기 μ‰½κ²Œ μ •λ¦¬ν•΄λ³΄μ•˜λ‹€.

4일전 ~ 2일전 λ²”μœ„λ₯Ό μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ‹ˆ -4와 +1 을 λͺ…μ‹œν•΄μ£Όλ©΄ λ²”μœ„κ°€ 생김을 λ³Ό 수 μžˆλ‹€.

νƒ€μž„μŠ€νƒ¬ν”„-mtime-+n

 

βŠ™ μ‹œκ°„λ‹¨μœ„ (mtime , ctime , atime)

μ§€μ •λœ n숫자 x 24 λ₯Ό κΈ°μ€€μ‹œκ°„μœΌλ‘œ μ •ν•˜κ³ ,

κΈ°μ€€μ‹œκ°„μ—μ„œ 24μ‹œκ°„ κ³Όκ±° μ‹œκ°„κΉŒμ§€λ₯Ό μ‹œκ°„λ²”μœ„λ‘œ μ§€μ •ν•œλ‹€.

  • λΆ€ν˜Έκ°€ μ—†μœΌλ©΄ μ‹œκ°„ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • 0 : -24h ~ ν˜„μž¬
    • 1 : -48h ~ -24h
    • 2 : -72h ~ -48h
  • + λ©΄ μ‹œκ°„λ²”μœ„λ³΄λ‹€ κ³Όκ±° μ‹œκ°„μ΄ λŒ€μƒ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • +0 : κ³Όκ±° ~ -24h
    • +1 : κ³Όκ±° ~ -48h
    • +2 : κ³Όκ±° ~ -72h
  • - λ©΄ κΈ°μ€€μ‹œκ°„λΆ€ν„° ν˜„μž¬κΉŒμ§€ λŒ€μƒ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • -0 : μ—†μŒ
    • -1 : -24h ~ ν˜„μž¬
    • -2 : ~48h ~ ν˜„μž¬

 

βŠ™ λΆ„λ‹¨μœ„ (mmin, cmin, amin)

μ§€μ •λœ 숫자λ₯Ό κΈ°μ€€ λΆ„μœΌλ‘œ μ •ν•˜κ³ 

  • λΆ€ν˜Έκ°€ μ—†μœΌλ©΄ λΆ„ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • 1 : 1m 전에 λ³€κ²½λœ 파일 검색
    • 2 : 2m 전에 λ³€κ²½λœ 파일 검색
  • + λ©΄ κΈ°μ€€λΆ„μ˜ κ³Όκ±° μ‹œκ°„μ΄ λŒ€μƒ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • +1 : κ³Όκ±° ~ -1m 
    • +2 : κ³Όκ±° ~ -2m
  • - λ©΄ κΈ°μ€€λΆ„λΆ€ν„° ν˜„μž¬κΉŒμ§€κ°€ λŒ€μƒ λ²”μœ„κ°€ κ²€μƒ‰μ‹œκ°„
    • -1 : -1m ~ ν˜„μž¬
    • -2 : -2m ~ ν˜„μž¬

find -mtime n 예제

find -mtime n (일수)μ—μ„œ 'n일 = n*24μ‹œκ°„' 이닀 달λ ₯μƒμ˜ μΌμˆ˜κ°€ μ•„λ‹ˆλ‹€.

  • find -mtime -2  :  2일(48μ‹œκ°„) 이내에 μˆ˜μ •λœ 파일 (κΈ°μ€€μ—μ„œ ν˜„μž¬κΉŒμ§€κ°€ 검색 λŒ€μƒ)
  • find -mtime 2   :  3일(72μ‹œκ°„) ~ 2일(48μ‹œκ°„) 사이에 μˆ˜μ •λœ 파일 (숫자 μ•žμ— +, - λΆ€ν˜Έκ°€ μ—†μœΌλ©΄ μ‹œκ°„ λ²”μœ„κ°€ 검색 λŒ€μƒ)
  • find -mtime +2 :  3일(72μ‹œκ°„) 보닀 과거인 보닀 이후에 μˆ˜μ •λœ 파일 (κΈ°μ€€μ—μ„œ κ³Όκ±° μ‹œκ°„ 전체가 검색 λŒ€μƒ)
-mtimeμ˜΅μ…˜μ€ -,+ λΆ€ν˜Έμ— λ”°λΌμ„œ κ·Έ μ˜λ―Έκ°€ λ‹¬λΌμ§€λ―€λ‘œ ν™•μ‹€νžˆ μˆ™μ§€ν•΄μ„œ μ‚¬μš©ν•˜μž. 
# ν˜„μž¬ λ‚ μ§œ 확인. 
$ date
2015λ…„ 10μ›” 23일 2μ‹œ 36λΆ„.
$ find -name "*.log" -mtime -2 -exec ls -lrt {} \;   

# -mtimeμ˜΅μ…˜ -2 : 2일(48μ‹œκ°„) ~ ν˜„μž¬
# ν˜„μž¬ λ‚ μ§œκ°€ 10μ›” 23일 2μ‹œ 36λΆ„ μ΄λ―€λ‘œ, 10μ›” 21일 2μ‹œ 36λΆ„ ~ ν˜„μž¬μ‹œκ°„ μ‚¬μ΄μ˜ 파일 쑰회.
$ find -name "*.log" -mtime 2 -exec ls -lrt {} \;   

# -mtimeμ˜΅μ…˜ 2 : 3일(72μ‹œκ°„) ~ 2일(48μ‹œκ°„)
# ν˜„μž¬ λ‚ μ§œκ°€ 10μ›” 23일 2μ‹œ 36λΆ„ μ΄λ―€λ‘œ, 10μ›” 20일 2μ‹œ 36λΆ„ ~ 10μ›” 21일 2μ‹œ 36λΆ„ μ‚¬μ΄μ˜ 파일 쑰회.
$ find -name "*.log" -mtime +2 -exec ls -lrt {} \;   

# -mtimeμ˜΅μ…˜ +2 : κ³Όκ±° ~ 3일(72μ‹œκ°„)
# ν˜„μž¬ λ‚ μ§œκ°€ 10μ›” 23일 2μ‹œ 36λΆ„ μ΄λ―€λ‘œ, 10μ›” 20일 2μ‹œ 36λΆ„ μ΄μ „μ˜ 파일 쑰회.
$ find -name "*.log" -mtime +1 -mtime -4 -exec ls -lrt {} \;   

# -mtimeμ˜΅μ…˜ +1 : 2일(48μ‹œκ°„) 이전에 μž‘μ„±, λ³€κ²½λœ 파일 쑰회
# -mtimeμ˜΅μ…˜ -4 : 4일(96μ‹œκ°„) 이내에 μž‘μ„±, λ³€κ²½λœ 파일 쑰회   

# ν˜„μž¬ λ‚ μ§œκ°€ 10μ›” 23일 2μ‹œ 36λΆ„ μ΄λ―€λ‘œ 
# -4(10μ›”19일 2μ‹œ 36λΆ„) ~ +1(10μ›” 21일 2μ‹œ 36λΆ„) μ‚¬μ΄μ˜ 파일 쑰회.
$ find /home/service/*.* -mtime +7 -exec rm -f {} \;

# μˆ˜μ •λœμ§€ 8일 μ΄μƒλœ λͺ¨λ“  ν˜•μ‹μ˜ νŒŒμΌλ“€ μ‚­μ œ

find -mmin n 예제

주기적으둜 파일이 생성 λ˜μ–΄μ•Ό ν•˜λŠ” κ³³μ—μ„œ 파일의 쑴재 μ—¬λΆ€ 확인 ν• λ•Œ μ‚¬μš©ν•˜λ©΄ μ’‹λ‹€.
$ find -mmin -1 이런 μ‹μœΌλ‘œ 1λΆ„ μ•ˆμ— κ°±μ‹ λœ 파일이 μžˆλŠ”μ§€ 쑴재 μ—¬λΆ€λ₯Ό 확인

# ν˜„μž¬ λ‚ μ§œ 확인. 
$ date
2021λ…„ 1μ›” 10일 17μ‹œ 40λΆ„
$ find -name "*.log" -mmin 7 -exec ls -lrt {} \;   

# 7뢄전이 λŒ€μƒ. 
# 2021λ…„ 1μ›” 10일 17μ‹œ 33λΆ„ νŒŒμΌλ“€μ΄ 쑰회 (7뢄전에 λ³€κ²½λœ 파일이 μžˆλŠ” μ§€ 검색)
$ find -name "*.log" -mmin +7 -exec ls -lrt {} \;   

# 7λΆ„μ „ 보닀 κ³Όκ±°κ°€ λŒ€μƒ
# κ³Όκ±° μ‹œκ°„ ~ 2021λ…„ 1μ›” 10일 17μ‹œ 32λΆ„ νŒŒμΌλ“€μ΄ 쑰회 (μˆ˜μ •λœμ§€ 7뢄이 λ„˜μ€ 파일)
$ find -name "*.log" -mmin -7 -exec ls -lrt {} \; 

# 7λΆ„μ „μ—μ„œ ν˜„μž¬κΉŒμ§€ λŒ€μƒ
# 2021λ…„ 1μ›” 10일 17μ‹œ 34λΆ„ ~ 2021λ…„ 1μ›” 10일 17μ‹œ 40λΆ„ νŒŒμΌλ“€μ΄ 쑰회 (μˆ˜μ • λœμ§€ 7뢄이 된 파일)

daystart μ˜΅μ…˜

daystart μ˜΅μ…˜μ„ μ§€μ •ν•˜λ©΄ ν•˜λ£¨μ˜ 기쀀을 0μ‹œλ‘œ μ„€μ • ν•œλ‹€.

달λ ₯ 일수 λ‹¨μœ„λ‘œ λ²”μœ„ μ§€μ • ν•˜λ €λŠ” κ²½μš°μ— 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 

예λ₯Ό λ“€μ–΄, ν˜„μž¬ 12 μ›” 24 일 03μ‹œ 00뢄을 κΈ°μ€€μœΌλ‘œ 보면 λ‹€μŒκ³Ό κ°™λ‹€.

# 3 일전 ~ ν˜„μž¬ (12 μ›” 24 일 24μ‹œ 00 λΆ„ ~ 72 μ‹œκ°„ μ „)
$ find ./ -daystart -mtime -3

# 3 일 μ „ (12 μ›” 21 일 24μ‹œ 00 λΆ„ ~ 24 μ‹œκ°„ μ „)
$ find ./ -daystart -mtime 3

# 3 일전 ~ κ³Όκ±° (12 μ›” 21 일 24μ‹œ 00 λΆ„ ~ κ³Όκ±°)
$ find ./ -daystart -mtime +3

 

μ†Œμˆ˜μ  μ•„λž˜λ‘œ 지정도 κ°€λŠ₯ν•˜λ‹€.

# ν•˜λ£¨μ˜ 반(12 μ‹œκ°„) μ „κΉŒμ§€ (ν˜„μž¬ μ‹œκ°„ ~ 12 μ‹œκ°„ μ „)
$ find ./ -mtime -0.5

# 참고자료

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ooa1769&logNo=220521238103 

https://egg.pe.kr/140