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

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

나는 방법을 안다얻다epoch 형식의 파일 mtime:

stat --format=%Y <file>

그러나 나는 어떻게 해야 할지 알 수 없었다.세트epoch 형식의 파일 mtime입니다. 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.

관련 정보