[Shell Script] 신규 파일을 만들지 않고 이미 있는 파일만 파일 갱신일을 바꾸기

 신규 파일을 만들지 않고 이미 있는 파일만 파일 갱신일을 바꾸기 


touch 명령어로 타임스탬프를 갱신하는 초기화 스크립트 등에서 존재하지 않는 파일을 만들고 싶을 때 사용합니다 . 

#!/bin/sh

#[YYYMMDDhhmm.SS]로 시간 지정
timestamp="202112201907.45"

#파일 타임스탬프 갱신

#-c 옵션이 있으므로 lock 파일은 신규 파일을 만들지 않음

touch -t $timestamp app1.log        #1
touch -c -t $timestamp lock.tmp     #2


















해설

이 스크립트는 app1.log와 lock.tmp라는 두 파일의 파일스탬프를 갱신 합니다.
로그 파일을 조작하는 다른 프로그램을 위해 테스트 자료를 만드는 경우를 생각합니다 . 
그 프로그램은 로그파일(app1.log)의 타임스탬프를 판별하여 무엇인가 처리를 합니다 . 
테스트를 할 때마다 셸 스크립트를 실행하여 테스트 자료를 초기화하는것은 자주 사용하는 방법입니다 . 

스크립트에서는 타임스탬프 조작에 touch 명령어를 사용합니다 .
 
파일스탬프의 구조

 

종류

설명

atime

최종 접근 시각

mtime

최종 수정 시각

ctime

최종 상태 변경 시각



stat 명령으로 살펴보기










#1에서 사용한 touch -t 로 시각을 지정하면 파일 atime과 mtime을 갱신합니다 . 

#2에서 락 파파일의 타임스탬프도 변경합니다 -c 옵션은 파일이 없을 경우 생성합니다 .