2월 10, 2024

[Windows] touch 명령어 대체하는 방법, fsutil과 touch의 다른점

1. Mac의 touch 명령어란? 

 MacOS에서는 새로운 파일을 특정 위치에 만들고 싶을 때 touch 명령어를 사용한다. 예시로 example.xml 파일을 만들고 싶을 때 아래와 같은 명령어로 새롭게 파일을 생성할 수 있다. 


touch example.xml


하지만 윈도우에서는 touch 명령어를 쓸 수 없다. 


이런 식으로 cmd에 해당 명령어를 쳐보면 'touch'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라는 오류 메세지가 뜰 것이다. 


2. Windows에서 파일을 생성하고 싶을 때 사용할 수 있는 명령어는?

그러면 만약 윈도우 기반으로 touch 명령어를 대체하고 싶으면 쓸 수 있는 명령어는 무엇일까? 


바로 fsutil 명령어이다. 


fsutil file createnew [폴더/파일명.확장자] [파일사이즈]


이런 식으로 사용할 수 있다. 



fsutil file createnew example.txt 0

이라는 명령어를 통해 파일사이즈가 0 인 example.txt 생성하고 



실제 위 경로에 들어가보면 example.txt 파일이 생성된 것을 알 수 있다. 

3. touch와 fsutil의 차이점 


그러면 위 명령어가 MacOS의 touch 명령어를 완전히 대체하는 것인가? 라는 의문이 들 수 있다. 결론부터 말하자면 아니다. MacOS의 touch 명령어는 사실 파일의 생성뿐 아니라 파일의 날짜와 시간을 변경하는 데 사용되는 명령어이다. 특별한 옵션 없이 사용될 때는 서버의 현재시간으로 변경되고 만약 파일이 존재하지 않는 경우에 크기가 0인 파일이 생성되는 것이다. 

반면 windows의 fsutil의 경우 이미 존재하는 파일의 경우 fsutil 명령어를 사용하면 오류가 나며 시간을 바꾸지는 못한다. 



즉 이미 example.txt를 만들어준 다음에 똑같은 명령어를 친다면 "오류: 파일이 있습니다" 라는 메세지를 뱉는다. 


따라서 Mac의 touch 명령어를 fsutil이 완전히 대체하지는 못하며, 새로운 파일을 생성할 때 사용할 수 있다 정도로 정리하면 된다.