Làm cách nào để đặt mtime của tệp ở định dạng epoch?


11

Tôi biết cách lấy mtime của tập tin ở định dạng epoch:

stat --format=%Y <file>

Nhưng tôi chưa thể tìm ra cách đặt mtime của tập tin ở định dạng epoch. Trang người dùng cảm ứng (1) dường như chỉ chấp nhận giá trị "dấu thời gian" (định dạng cố định nhiều hơn hoặc ít hơn, sử dụng tháng, ngày, giờ, phút, v.v.) hoặc "chuỗi ngày có thể đọc được của con người định dạng miễn phí".

Có một tiện ích khác tôi nên xem xét?

Cảm ơn.


1
Hãy luôn luôn bao gồm hệ điều hành của bạn. Các giải pháp rất thường phụ thuộc vào Hệ điều hành đang được sử dụng. Bạn đang sử dụng Unix, Linux, BSD, OSX, cái gì khác? Phiên bản nào?
terdon

Câu trả lời:



1

Với perl:

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

Điều này sẽ thay đổi mtime của tất cả các tập tin trong @ARGV. (stat($_))[8]là atime của tập tin.

utime có thể nhận danh sách các tệp, nếu bạn không quan tâm đến việc thay đổi đồng thời, bạn có thể thử:

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

Ghi chú

utimephụ thuộc vào thư viện thời gian chạy C và hệ thống tập tin đang sử dụng. xem thêm trong perldoc -f utimeperldoc perlport.


0

Với touchlệnh từ GNU coreutils (tức là trên Linux và Cygwin không được nhúng), hãy xem hướng dẫn đầy đủ (thường có sẵn ở định dạng thông tin) để biết tài liệu về các định dạng đầu vào ngày . Ngày kỷ nguyên được chỉ định với tiền tố @:

touch -d @1234567890 foo

Điều này cũng hoạt động với BusyBox (ít nhất là trên một số hệ thống, nó có thể phụ thuộc vào các tùy chọn biên dịch).

Với * BSD, tôi không nghĩ bạn có thể làm điều này touchmột mình, nhưng bạn có thể gọi dateđể định dạng thời gian kỷ nguyên thành một định dạng touchchấp nhận.

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

POSIX nổi tiếng là thiếu cách để thao túng ngày kỷ nguyên. Bạn có thể sử dụng perl .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.