Epoch 형식으로 파일의 mtime을 설정하는 방법은 무엇입니까?

Epoch 형식으로 파일의 mtime을 설정하는 방법은 무엇입니까?

난 어떻게 하는지 알아얻다파일 수정 시간(에포크 형식):

stat --format=%Y <file>

하지만 난 방법을 몰랐어놓다파일 수정 시간(에포크 형식)입니다. touch(1) 매뉴얼 페이지는 "타임스탬프" 값(월, 일, 시간, 분 등을 사용하는 다소 고정된 형식) 또는 "대부분 사람이 읽을 수 있는 자유 형식 날짜 문자열"만 허용하는 것으로 보입니다.

조사해야 할 다른 유틸리티가 있습니까?

감사해요.

답변1

적어도 GNU 세계에서는:

touch --date=@1403970787 file

와 마찬가지로 date.

답변2

touchGNU coreutils(즉, 내장되지 않은 Linux 및 Cygwin)의 명령을 사용하면 다음을 참조하세요.완전한 매뉴얼(보통 정보 형식으로 현지에서 제공됨)날짜 입력 형식.신기원 날짜접두어로 표시 @:

touch -d @1234567890 foo

이는 BusyBox에서도 작동합니다(적어도 일부 시스템에서는 컴파일 옵션에 따라 달라질 수 있음).

*BSD의 경우 혼자서는 할 수 없을 것 같지만 , 에포크 시간을 허용 가능한 형식으로 포맷하도록 touch호출할 수 있습니다 .datetouch

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

POSIX는 시대 날짜를 조작하는 방법이 부족하기로 악명이 높습니다. 당신은 할 수펄을 사용하여.

답변3

그리고 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 utime및 에서 자세한 내용을 확인하세요 perldoc perlport.

관련 정보