#1 Le 18/05/2018, à 21:28
- alex2423
[find] l'option -mtime au comportement curieux
Bonjour,
J'aimerais vous parler de l'option -mtime dont j'ai du mal à comprendre son fonctionnement.
Dans le manuel :
-mtime n
Fichier dont les données ont été modifiées il y a n*24 heures
http://pwet.fr/man/linux/commandes/find
Ce qui veut dire :
- mtime 2 => fichier qui a été modifié il y a 2*24 heures, soit 2 jours.
Et pourtant :
J'ai un jeux de données sur 3 jours :
trusty@trusty-lap:~/Documents/test_bash$ ls -lrt
total 0
-rw-rw-r-- 1 trusty trusty 0 mai 15 20:00 fichier_15_2000
-rw-rw-r-- 1 trusty trusty 0 mai 15 23:00 fichier_15_2300
-rw-rw-r-- 1 trusty trusty 0 mai 16 20:00 fichier_16_2000
-rw-rw-r-- 1 trusty trusty 0 mai 16 23:00 fichier_16_2300
-rw-rw-r-- 1 trusty trusty 0 mai 17 20:00 fichier_17_2000
-rw-rw-r-- 1 trusty trusty 0 mai 17 23:00 fichier_17_2300
Et j'execute ma commande
trusty@trusty-lap:~/Documents/test_bash$ date ;find . -mtime +1| sort -r
vendredi 18 mai 2018, 22:10:53 (UTC+0200)
./fichier_16_2000
./fichier_15_2300
./fichier_15_2000
Nous sommes le vendredi 18 à 22h10, A J-1, nous sommes le jeudi 17 à 22h10. Donc si j'utilise l'option -mtime +1, je m'attends à sélectionner tous les fichiers ayant été modifié il y a plus de 24h, soit avant le jeudi 17 à 22h10
Avant le jeudi à 22h, j'ai 2 fichiers :
-rw-rw-r-- 1 trusty trusty 0 mai 16 23:00 fichier_16_2300
-rw-rw-r-- 1 trusty trusty 0 mai 17 20:00 fichier_17_2000
La consigne du manuel je selectionne de plus de n*24heures n'est pas respecté. La commande man devrait étre corrigé en :
-mtime n
Fichier dont les données ont été modifiées il y a (n+1)*24 heures
Je viens de trouver un site qui va dans mon sens : http://www.piprime.fr/1378/exemples-uti … hell-find/
Souvent, avec la documentation que je trouve éronné, je me plante dans mes filtres temporelles. Il faut juste le savoir qu'il faut rajouter un +1 dans la doc. Dommage qu'ils n'ont pas été précis cette fois-ci
Hors ligne
#2 Le 19/05/2018, à 05:53
- pingouinux
Re : [find] l'option -mtime au comportement curieux
Bonjour,
C'est parce que find ne tient compte que de la partie entière du nombre de jours.
Voici un extrait de man find (l'explication pour les arrondis est donnée pour -atime, mais c'est la même chose pour -mtime) :
-atime n
File was last accessed n*24 hours ago. When find figures out how many
24-hour periods ago the file was last accessed, any fractional part is
ignored, so to match -atime +1, a file has to have been accessed at least
two days ago.
Hors ligne
#3 Le 22/05/2018, à 21:41
- alex2423
Re : [find] l'option -mtime au comportement curieux
Merci pinguinnex pour l'explication. Cependant ce serait vraiment surprenant le fait ne pas gérer la partie décimale, ce qui voudrait quasiment tout le temps.
Dans ce cas, cela voudrait dire que la règle de gestion énoncée dans le manuel, "Fichier dont les données ont été modifiées il y a n*24 heures" est appliquée uniquement dans le cas ou le lancement de la commande find coincide parfaitement à l'heure et minutes des fichiers.
Exemple :
Des fichiers J-1 daté 22:34, une exécution de la commande J à 22:34. L'option mtime ne devrait pas faire un arrondit à l'entier supérieur.
Sincèrement je trouve leur explication tordu. Je vais faire quelques autres tests pour mieux comprendre
Hors ligne
#4 Le 23/05/2018, à 08:26
- bruno
Re : [find] l'option -mtime au comportement curieux
Le même en français
-atime n
Dernier accès au fichier il y a n*24 heures. Lorsque find calcule le nombre de périodes de 24 heures depuis
lequel le fichier a été accédé, la partie fractionnelle est ignorée. Ainsi, pour correspondre à -atime +1,
un fichier doit avoir été accédé il y a au moins deux jours.
Si -atime n'est pas assez précis (modulo 24heures); il faut utiliser -amin