리눅스 / 명령어 / touch / 빈 파일 만들기, 최종 수정 시간 변경하기
Linux의 touch는 파일이 없으면 빈 파일을 만들고, 파일이 있으면 기본적으로 접근 시간과 수정 시간을 현재 시간으로 갱신합니다. 기존 파일의 내용은 지우지 않지만, 시간 정보를 사용하는 백업이나 빌드 작업에는 영향을 줄 수 있습니다.
빈 파일 만들기
다음 명령은 현재 디렉터리에 example.txt가 없을 때 빈 파일을 만듭니다. 이후 예제는 GNU coreutils의 touch와 stat를 기준으로 합니다. 기존 데이터를 건드리지 않도록 별도의 빈 실습 디렉터리에서 실행하세요.
touch example.txt
ls -l example.txt
목록에 크기가 0인 파일이 표시됩니다. 같은 이름의 파일이 이미 있다면 새 빈 파일로 덮어쓰지 않고 기존 파일의 시간을 갱신합니다. 이름에 공백이 있다면 touch "my notes.txt"처럼 따옴표로 묶습니다. 여러 이름을 공백으로 나열하면 각각 처리합니다.
기존 파일의 시간 확인과 갱신
파일의 접근 시간(atime)은 마지막 접근과 관련된 시간이고, 수정 시간(mtime)은 파일 내용이 마지막으로 수정된 시간입니다. 기본 touch example.txt는 두 시간을 현재 시간으로 설정합니다. 변경 전후는 다음처럼 확인할 수 있습니다.
stat example.txt
touch example.txt
stat example.txt
stat 출력의 Access와 Modify 항목을 비교하세요. 실제 출력 언어와 표시 형식은 환경에 따라 다를 수 있고, 파일 시스템의 시간 해상도 때문에 매우 짧은 간격의 차이가 보이지 않을 수 있습니다.
상태 변경 시간(ctime)은 권한 등 메타데이터 변경과 관련되며, 생성 시간과 같지 않습니다. touch로 시간 정보를 바꾸면 ctime도 갱신될 수 있지만, ctime을 임의의 값으로 직접 지정하거나 생성 시간을 바꿀 수는 없습니다. 접근 시간이 실제 읽기마다 갱신되는지는 파일 시스템과 마운트 설정에도 영향을 받습니다. GNU 파일 시간 설명에서 각 시간의 의미를 확인할 수 있습니다.
접근 시간 또는 수정 시간만 바꾸기
-a는 접근 시간만, -m은 수정 시간만 선택합니다. 아래는 실습 파일의 수정 시간을 현재 시간으로 바꾸고 결과를 확인하는 예제입니다.
touch -m example.txt
stat example.txt
-a 또는 -m은 선택한 접근·수정 시간에 대한 옵션입니다. 파일의 상태 변경 시간까지 그대로 유지한다는 뜻은 아닙니다. 파일이 없을 때는 별도 옵션이 없으면 빈 파일이 만들어집니다.
원하는 시간이나 다른 파일의 시간 사용하기
GNU touch -d로 날짜와 시간을 지정할 수 있습니다. 아래 예제는 실습 파일의 접근·수정 시간을 지정한 시각으로 설정합니다.
touch -d '2024-01-15 10:30:00' example.txt
stat example.txt
시간대를 따로 지정하지 않으면 환경 변수 TZ 또는 시스템 시간대에 따라 해석됩니다. 출력의 접근·수정 시간이 지정한 값인지 확인하세요. 파일 시스템의 지원 범위와 해상도에 따라 저장된 값이 달라질 수 있습니다.
다른 파일을 기준으로 삼으려면 -r을 사용합니다. 다음은 현재 디렉터리에 reference.txt와 example.txt가 모두 있을 때의 예제입니다.
touch -r reference.txt example.txt
stat reference.txt example.txt
대상 파일의 접근·수정 시간을 기준 파일의 값으로 설정합니다. 기준 파일이 없으면 오류가 발생하며, 기본 동작에서는 대상이 없을 때 빈 파일이 생성될 수 있습니다. 자세한 옵션은 GNU touch 설명서를 참고하세요.
파일을 만들지 않고 시간만 갱신하기
-c는 지정한 파일이 없을 때 새 파일을 만들지 않습니다. 다음 명령은 파일이 이미 있다면 그 시간을 현재 시간으로 갱신하고, 없다면 생성하지 않습니다.
touch -c example.txt
파일이 없는 경우에도 오류 없이 끝날 수 있으므로, 파일의 존재 여부를 확인하는 용도로 이 명령의 성공 상태만 사용하지 마세요. 파일을 새로 만들려면 상위 디렉터리에 쓰기 권한이 필요하고, 기존 파일의 시간을 바꾸는 권한은 소유자·설정하려는 시간 등에 따라 달라집니다. 오류가 나면 경로와 권한을 확인하세요.




