touch 는 아무것도 없는 빈 파일을 생성하거나 파일의 날짜와 시간을 수정하는 명령어
touch 의 파일명이 이미 존재한다면 서버의 현재 시간으로 파일의 최근 사용한 시간 (access time) 과 최근 변경 시간 (modification time) 을 변경하고 파일명이 존재하지 않는다면 파일의 크기가 0인 빈 파일을 생성
touch [옵션][파일명]
# 파일이 없다면 file txt 파일 생성, 있다면 file.txt의 시간 정보 수정
touch file.txt
- 수정 할 파일이 존재하지 않는다면 크기가 0인 빈 파일 생성
- 수정 할 파일이 존재한다면 해당 파일의 최근 사용한 시간과 최근 변경 시간을 현재 시간으로 수정
- 별다른 옵션이 없다면 atime, ctime, mtime 모두 변경
리눅스 타임 스탬프 종류
- atime : 최종 접근 시간 (access time)
- ctime : 최종 상태 변경 시간 (change time)
- mtime : 최종 수정 시간 (modify time)
자주 사용하는 옵션
-a | 현 시간으로 파일의 접근 시간, 변경 시간 수정 |
-c | 기존 파일이 없으면 파일이 생성되지 않음 |
-m | 현재 시간으로 파일의 수정 시간, 변경 시간 수정 |
-d | 지정한 시간으로 접근 시간, 수정 시간이 변경되고 변경시간은 현재 시간으로 수정 |
-r | 지정한 파일의 접근 시간, 수정 시간으로 파일이 수정되고 변경 시간은 현재 시간으로 수정 |
-t | 지정한 시간으로 접근 시간, 수정 시간을 수정하고 변경 시간은 현재 시간으로 수정 |
여러 파일의 생성 시간을 수정하고 싶을 때
touch [생성 or 수정 대상1] [생성 or 수정 대상2] [생성 or 수정 대상3] .....
touch test1.txt test2.txt test3.txt
# 현재 위치의 모든 파일 수정
touch *
# 현재 위치의 .txt로 끝나는 모든 파일 수정
touch *.txt
위와 같이 한 번의 명령어로 여러 개의 파일을 만들거나 수정할 수 있음
하위 폴더 모두 touch 하고 싶을 때
# 하위 폴더 모두 touch
find . -exec touch {} \;
#또는
find . -print | xargs touch
# 하위 폴더의 jsp만 전부 touch
find . -name '*.jsp' -exec touch {} \;
touch 명령어는 현재 디렉토리에 있는 파일만을 대상으로 하기 때문에 디렉토리 내부의 모든 파일들을 touch 하고 싶다면 위와 같이 사용해야 함
특히 jsp 파일의 경우 import 된 파일이 변경되었다면 import 하고 있는 파일들을 한 번 touch 해줘야 제대로 컴파일 되는 경우들이 있기 때문에 위와 같이 사용함