Comment définir le mtime d'un fichier au format d'époque?


11

Je sais comment obtenir le mtime d'un fichier au format d'époque:

stat --format=%Y <file>

Mais je n'ai pas pu comprendre comment définir le mtime d'un fichier au format epoch. La page de manuel touch (1) semble accepter uniquement une valeur "d'horodatage" (format plus ou moins fixe qui utilise des mois, des jours, des heures, des minutes, etc.) ou une "chaîne de date lisible par l'humain au format principalement libre".

Existe-t-il un autre utilitaire que je devrais étudier?

Merci.


1
Veuillez toujours inclure votre système d'exploitation. Les solutions dépendent très souvent du système d'exploitation utilisé. Utilisez-vous Unix, Linux, BSD, OSX, autre chose? Quelle version?
terdon

Réponses:



1

Avec perl:

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

Cela changera le mtime de tous les fichiers dans @ARGV. (stat($_))[8]est au moment du fichier.

utime peut recevoir la liste des fichiers, si vous ne vous souciez pas de changer l'heure, vous pouvez essayer:

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

Remarque

utimedépend de la bibliothèque d'exécution C et du système de fichiers utilisés. voir plus dans perldoc -f utimeet perldoc perlport.


0

Avec la touchcommande de GNU coreutils (c'est-à-dire sur Linux non intégré et Cygwin), consultez le manuel complet (généralement disponible localement au format info) pour la documentation des formats d'entrée de date . Les dates d'époque sont indiquées avec le préfixe @:

touch -d @1234567890 foo

Cela fonctionne également avec BusyBox (au moins sur certains systèmes, cela peut dépendre des options de compilation).

Avec * BSD, je ne pense pas que vous puissiez le faire touchseul, mais vous pouvez appeler datepour formater l'heure de l'époque dans un format qui touchaccepte.

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

POSIX manque notoirement de moyens pour manipuler les dates d'époque. Vous pouvez utiliser perl .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.