Wie stelle ich die mtime einer Datei im Epochenformat ein?

11

Ich weiß, wie man die mtime einer Datei im Epochenformat erhält :

stat --format=%Y <file>

Aber ich habe nicht in der Lage , herauszufinden , wie setzen eine Datei mtime in Epoch - Format. Die Manpage touch (1) akzeptiert anscheinend nur einen "Zeitstempel" -Wert (mehr oder weniger festes Format, das Monate, Tage, Stunden, Minuten usw. verwendet) oder eine "meist frei lesbare Datumszeichenfolge im freien Format".

Gibt es ein anderes Dienstprogramm, das ich prüfen sollte?

Vielen Dank.

eil
quelle
1
Bitte geben Sie immer Ihr Betriebssystem an. Lösungen hängen sehr oft vom verwendeten Betriebssystem ab. Verwenden Sie Unix, Linux, BSD, OSX, etwas anderes? Welche Version?
Terdon

Antworten:

10

Zumindest in der GNU-Welt:

touch --date=@1403970787 file

Wie bei date.

Hauke ​​Laging
quelle
1

Mit perl:

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

Dies ändert die Zeit aller Dateien in @ARGV. (stat($_))[8]ist der Zeitpunkt der Datei.

utime Wenn Sie sich nicht für eine Änderung der Zeit interessieren, können Sie Folgendes versuchen:

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

Hinweis

utimehängt von der C-Laufzeitbibliothek und dem verwendeten Dateisystem ab. sehen Sie mehr in perldoc -f utimeund perldoc perlport.

cuonglm
quelle
0

Mit dem touchBefehl von GNU coreutils (dh unter nicht eingebettetem Linux und Cygwin) finden Sie im vollständigen Handbuch (normalerweise lokal im Infoformat verfügbar) eine Dokumentation der Datumseingabeformate . Epochendaten werden mit dem Präfix angegeben @:

touch -d @1234567890 foo

Dies funktioniert auch mit BusyBox (zumindest auf einigen Systemen kann dies von den Kompilierungsoptionen abhängen).

Ich glaube nicht, dass Sie dies mit * BSD touchalleine tun können, aber Sie können aufrufen, dateum die Epochenzeit in ein Format zu formatieren, das touchakzeptiert.

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

POSIX bietet bekanntermaßen keine Möglichkeiten, Epochendaten zu manipulieren. Sie können Perl verwenden .

Gilles 'SO - hör auf böse zu sein'
quelle