에포크 형식으로 파일의 mtime을 어떻게 설정합니까?


11

에포크 형식으로 파일의 mtime 을 얻는 방법을 알고 있습니다 .

stat --format=%Y <file>

그러나 파일 시간을 에포크 형식으로 설정 하는 방법을 알 수 없었습니다 . touch (1) 매뉴얼 페이지는 "타임 스탬프"값 (달, 일, 시간, 분 등을 사용하는 거의 고정 된 형식) 또는 "주로 자유로운 형식의 사람이 읽을 수있는 날짜 문자열"만 허용하는 것으로 보입니다.

살펴 봐야 할 다른 유틸리티가 있습니까?

감사.


1
제발 항상 당신의 OS를 포함한다. 솔루션은 종종 사용중인 운영 체제에 따라 다릅니다. 유닉스, 리눅스, BSD, OSX 등을 사용하고 있습니까? 어떤 버전?
terdon

답변:



1

perl:

$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...

에있는 모든 파일의 mtime이 변경됩니다 @ARGV. (stat($_))[8]파일 시간입니다.

utime 시간 변경에 신경 쓰지 않으면 파일 목록을받을 수 있습니다.

 $ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...

노트

utimeC 런타임 라이브러리 및 파일 시스템에 따라 다릅니다. 더보고 perldoc -f utimeperldoc perlport.


0

touchGNU coreutils (즉, 내장되지 않은 Linux 및 Cygwin) 의 명령 으로 날짜 입력 형식설명서 에 대한 전체 설명서 (일반적으로 정보 형식으로 로컬에서 사용 가능)를 참조하십시오 . 에포크 날짜 는 접두사로 표시됩니다 .@

touch -d @1234567890 foo

이것은 BusyBox 와도 작동합니다 (적어도 일부 시스템에서는 컴파일 옵션에 따라 다를 수 있습니다).

* BSD를 사용하면 혼자서이 작업을 수행 할 수 없다고 생각 touch하지만 date, 에포크 시간을 touch허용 되는 형식으로 형식화하기 위해 호출 할 수 있습니다 .

touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo

POSIX는 획기적인 날짜를 조작하는 방법이 부족한 것으로 악명이 높습니다. perl사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.