Come posso impostare il mtime di un file in formato epoca?


11

So come ottenere il mtime di un file in formato epoca:

stat --format=%Y <file>

Ma non sono stato in grado di capire come impostare il mtime di un file in formato epoca. La pagina man touch (1) sembra accettare solo un valore di "data / ora" (formato più o meno fisso che utilizza mesi, giorni, ore, minuti, ecc.) O una "stringa di data leggibile dall'uomo in formato prevalentemente gratuito".

C'è un'altra utility che dovrei esaminare?

Grazie.


1
Ti preghiamo di includere sempre il tuo sistema operativo. Le soluzioni dipendono molto spesso dal sistema operativo in uso. Stai usando Unix, Linux, BSD, OSX, qualcos'altro? Quale versione?
terdon

Risposte:



1

Con perl:

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

Questo cambierà mtime di tutti i file in @ARGV. (stat($_))[8]è il tempo del file.

utime può ricevere un elenco di file, se non ti interessa cambiare atime, puoi provare:

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

Nota

utimedipende dalla libreria di runtime C e dal filesystem in uso. vedere di più in perldoc -f utimee perldoc perlport.


0

Con il touchcomando da GNU coreutils (cioè su Linux non incorporato e Cygwin), guarda il manuale completo (solitamente disponibile localmente in formato informativo ) per la documentazione dei formati di input della data . Le date dell'epoca sono indicate con il prefisso @:

touch -d @1234567890 foo

Funziona anche con BusyBox (almeno su alcuni sistemi, potrebbe dipendere dalle opzioni di compilazione).

Con * BSD, non penso che tu possa farlo da touchsolo, ma puoi chiamare dateper formattare il tempo in un formato che touchaccetta.

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

POSIX è notoriamente privo di modi per manipolare le date dell'epoca. Puoi usare perl .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.