Solution 1 :
Il est possible que le problème de fuseau horaire soit un faux-fuyant.
find . -mtime 7
devrait trouver des fichiers datant d'exactement sept jours (« sept » signifiant entre 7 000 et 7 999 jours, plus ou moins, et « anciens » signifiant « depuis la dernière modification »). Si vous voulez des fichiers datant de plus de sept jours, ce qui est le cas à en juger par la date de votre premier fichier (juin 2010), essayez
find . -mtime +7
Je suis d'accord avec vous sur le fait que le fuseau horaire apparent est étrange, mais je pense que c'est explicable. man stat
est clair qu'un time_t est stocké, comme le dit Sean R ci-dessous. Quoi ls
ce qu'il fait est de l'afficher en heure locale, et il a la gentillesse de tenir compte des conventions locales d'heure d'été lorsqu'il le fait.
Mon système est le même:les heures de fichier qui tombent en mars-octobre sont affichées avec un fuseau horaire +0100 tandis que celles qui tombent en octobre-mars sont affichées avec un fuseau horaire +0000, non pas parce que cela est stocké dans le système de fichiers, mais parce que le fichier de fuseau horaire indique à mon système qu'en juin, lorsque j'ai touché le fichier, je l'aurais fait à une heure que je pensais être 8h du matin, pas ce-serait-7h-si-c'était-l'hiver. ls
a la gentillesse, lorsqu'il affiche des heures qui se trouvent en été, de les montrer telles qu'elles seraient apparues en été, c'est tout.
Si vous pouvez trouver des fuseaux horaires dans votre ls
sorties qui ne sont ni estivales ni hivernales selon votre convention locale, alors je me trompe - mais je n'en trouve aucune sur mon système.
Solution 2 :
Avec find, -mtime fonctionne par périodes de 24 heures donc
-mtime 0 or -mtime -1 mean today
-mtime 3 would mean 3 days old
-mtime +1 means greater than one day old
-mtime -7 means less than 7 days old
Solution 3 :
Pour expliquer un peu plus la partie fuseau horaire (la discussion "mtime" est gérée par d'autres commentaires)...
La date et l'heure sont stockées sur des fichiers en secondes depuis minuit le 1er janvier 1970, UTC. Cela signifie qu'il n'y a pas de fuseau horaire qui leur est associé. Les programmes utilisent alors le paramètre de fuseau horaire du système dans /etc/timezone
, à moins qu'elle ne soit remplacée par la variable d'environnement "TZ", pour afficher cette heure dans le fuseau horaire local :
chats:/tmp$ touch foo
chats:/tmp$ ls -l foo
-rw-r--r-- 1 jafo jafo 0 Dec 1 06:14 foo
chats:/tmp$ TZ=GMT ls -l foo
-rw-r--r-- 1 jafo jafo 0 Dec 1 13:14 foo
chats:/tmp$
Notez que dans la dernière ligne, il affiche 13h14, et dans la sortie au-dessus, où j'utilise mon fuseau horaire par défaut de l'heure des montagnes américaines (GMT-0700), il affiche 6h14. La différence est le deuxième "ls" où j'ai défini la variable d'environnement TZ sur GMT.
Vous pouvez également utiliser "stat" pour examiner toutes les heures/dates associées aux fichiers.