Як встановити mtime файлу у форматі епохи?


11

Я знаю, як отримати mtime файлу у форматі епохи:

stat --format=%Y <file>

Але я не зміг зрозуміти, як встановити mtime файлу у форматі епохи. Сторінка дотику (1), начебто, приймає лише значення "часової позначки" (більш-менш фіксований формат, який використовує місяці, дні, години, мінуси тощо) або "здебільшого вільний текст, що читається людиною у вільному форматі".

Чи є інша утиліта, яку я повинен шукати?

Спасибі.


1
Будь ласка, завжди включайте вашу ОС. Рішення дуже часто залежать від операційної системи, яка використовується. Використовуєте Unix, Linux, BSD, OSX, щось інше? Яка версія?
terdon

Відповіді:



1

З perl:

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

Це змінить mtime всіх файлів у @ARGV. (stat($_))[8]є atime файлу.

utime Ви можете отримувати список файлів, якщо вам не байдуже змінити atime, ви можете спробувати:

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

Примітка

utimeзалежить від використання бібліотеки C і файлової системи. див. більше в perldoc -f utimeта perldoc perlport.


0

За допомогою 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 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.