에포크 형식으로 파일의 mtime 을 얻는 방법을 알고 있습니다 .
stat --format=%Y <file>
그러나 파일 시간을 에포크 형식으로 설정 하는 방법을 알 수 없었습니다 . touch (1) 매뉴얼 페이지는 "타임 스탬프"값 (달, 일, 시간, 분 등을 사용하는 거의 고정 된 형식) 또는 "주로 자유로운 형식의 사람이 읽을 수있는 날짜 문자열"만 허용하는 것으로 보입니다.
살펴 봐야 할 다른 유틸리티가 있습니까?
감사.
에포크 형식으로 파일의 mtime 을 얻는 방법을 알고 있습니다 .
stat --format=%Y <file>
그러나 파일 시간을 에포크 형식으로 설정 하는 방법을 알 수 없었습니다 . touch (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 ...
노트
utime
C 런타임 라이브러리 및 파일 시스템에 따라 다릅니다. 더보고 perldoc -f utime
와 perldoc perlport
.
touch
GNU 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 을 사용할 수 있습니다 .