Linux / 명령어 / touch - 파일 생성과 타임스탬프 변경
touch는 파일이 없으면 빈 파일을 만들고, 파일이 있으면 접근 시각과 수정 시각을 갱신하는 명령입니다. 파일 내용을 바꾸지 않고 타임스탬프만 조정할 수 있어 테스트 파일 생성, 빌드 작업과 자동화 스크립트에서 자주 사용합니다.
이 글에서는 GNU Coreutils의 touch를 기준으로 기본 사용법, atime과 mtime 선택, 원하는 날짜 지정, 기준 파일의 시간 복사와 심볼릭 링크 처리 방법을 설명합니다.
touch 명령어란?
touch는 지정한 파일의 접근 시각(access time)과 내용 수정 시각(modification time)을 기본적으로 현재 시각으로 설정합니다. 파일이 없을 때는 크기가 0바이트인 일반 파일을 새로 만들지만, -c를 사용하면 새 파일을 만들지 않습니다. ctime이나 파일 생성 시각(Birth time)을 원하는 값으로 직접 설정하는 명령은 아닙니다.
기본 문법
touch [옵션] 파일 ...
파일명이나 경로에 공백이 있으면 따옴표로 감싸고, 하이픈으로 시작하는 이름은 가능한 경우 -- 뒤에 지정합니다. 지원 옵션은 배포판과 GNU Coreutils 버전에 따라 다를 수 있으므로 touch --help와 man touch으로 현재 시스템의 설명을 확인하세요.
touch 기본 사용법
빈 파일 만들기
존재하지 않는 경로를 지정하면 빈 파일이 생성됩니다. 여러 파일도 한 번에 만들 수 있습니다.
touch memo.txt touch file1.txt file2.txt file3.txt touch "annual report.txt"
기존 파일의 시간을 현재로 갱신하기
파일이 이미 있으면 내용과 크기는 유지되고 접근 시각과 수정 시각이 현재 시각으로 갱신됩니다. 변경 전후 값은 stat으로 확인할 수 있습니다.
stat notes.txt touch notes.txt stat notes.txt
파일이 없을 때 만들지 않기
기존 파일의 시간만 갱신해야 한다면 -c 또는 --no-create를 사용합니다. 대상이 없어도 새 파일을 만들지 않으며 일반적으로 오류 메시지도 출력하지 않습니다.
touch -c existing.txt
실행 결과 확인하기
touch는 성공해도 보통 화면에 아무것도 출력하지 않습니다. 새로 만든 파일의 크기가 0바이트인지 확인하려면 다음처럼 조회합니다.
touch empty-demo.txt stat -c '%s %n' empty-demo.txt
예시 출력:
0 empty-demo.txt
기존 파일에 같은 명령을 실행했다면 크기와 내용은 그대로이며 접근·수정 시각만 갱신될 수 있습니다. 그 차이는 stat -c '%x %y'로 확인하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-a |
접근 시각만 변경합니다. |
-m |
내용 수정 시각만 변경합니다. |
-c, --no-create |
대상 파일이 없어도 새 파일을 만들지 않습니다. |
-d STRING |
사람이 읽기 쉬운 날짜 문자열을 해석해 시간을 설정합니다. |
-t STAMP |
[[CC]YY]MMDDhhmm[.ss] 형식으로 시간을 지정합니다. |
-r FILE |
기준 파일의 접근·수정 시각을 복사합니다. |
-h, --no-dereference |
가능한 시스템에서 링크 대상이 아니라 심볼릭 링크 자체의 시간을 변경합니다. |
--time=WORD |
access 또는 modify처럼 변경할 시간을 선택합니다. |
긴 옵션은 의미를 파악하기 쉽고 스크립트 검토에도 도움이 됩니다. 다만 이식성이 중요한 스크립트에서는 대상 시스템이 해당 GNU 확장 옵션을 지원하는지 먼저 확인하세요.
실전 활용 예제
접근 시각과 수정 시각을 따로 변경하기
-a는 atime만, -m은 mtime만 변경합니다. 두 옵션을 함께 사용하면 기본 동작과 같이 두 시간을 모두 바꿉니다.
touch -a access-log.txt touch -m generated.css
원하는 날짜와 시각 지정하기
-d는 날짜 문자열을 해석합니다. 시간대나 상대 표현은 실행 환경에 따라 해석 결과가 달라질 수 있으므로 자동화에서는 명확한 형식과 시간대를 사용하는 편이 안전합니다.
touch -d '2026-09-23 14:30:00 +0900' report.txt touch -t 202609231430.00 report.txt
기준 파일의 타임스탬프 복사하기
-r을 사용하면 기준 파일의 atime과 mtime을 다른 파일에 적용할 수 있습니다. 복사한 뒤 stat으로 결과를 검증하세요.
touch -r reference.txt target.txt stat reference.txt target.txt
touch와 관련 명령 비교
| 명령·방법 | 주요 역할 | 적합한 상황 |
|---|---|---|
touch |
빈 파일 생성 또는 atime·mtime 변경 | 내용을 쓰지 않고 파일이나 시간을 준비할 때 |
truncate |
파일 크기를 지정하거나 조정 | 0바이트 파일 또는 특정 크기의 파일이 필요할 때 |
date |
현재 시각 표시·변환과 시스템 시각 관리 | 날짜 계산이나 형식 변환이 필요할 때 |
stat |
파일 메타데이터 조회 | 변경 전후 타임스탬프를 확인할 때 |
사용할 때 주의할 점
touch는 내용을 비우지 않는다
기존 파일에 touch를 실행해도 파일 내용은 유지됩니다. 파일을 0바이트로 줄이려면 truncate -s 0이나 적절한 리디렉션을 사용해야 합니다.
ctime과 생성 시각은 직접 지정할 수 없다
파일의 inode 상태가 바뀌면 ctime은 커널이 갱신합니다. touch로 ctime이나 Birth time을 임의의 값으로 설정할 수 있다고 가정하지 마세요.
빌드 우회를 위해 시간을 조작하지 않는다
타임스탬프 기반 빌드 도구에서 강제로 재빌드할 때 유용하지만, 의존성 문제를 숨기는 용도로 사용하면 재현하기 어려운 결과가 생길 수 있습니다.
FAQ
touch로 기존 파일 내용이 삭제되나요?
아닙니다. 기존 파일의 내용과 크기는 유지되고 선택한 타임스탬프만 변경됩니다.
파일이 없을 때 만들지 않으려면 어떻게 하나요?
touch -c 파일을 사용합니다. 대상이 없으면 새 파일을 만들지 않습니다.
수정 시각만 바꾸려면 어떻게 하나요?
touch -m 파일을 사용합니다. 접근 시각만 바꾸려면 -a를 사용하세요.
다른 파일과 같은 시간으로 맞출 수 있나요?
touch -r 기준파일 대상파일을 사용하면 기준 파일의 접근·수정 시각을 복사할 수 있습니다.









