Supposons que jai environ 10 000 fichiers dans un dossier. Jutilise crontab toutes les heures pour trouver les fichiers modifiés au cours des 60 dernières minutes, puis les traiter.

Appelez find -mmin -60 à 01:00:00

Supposons que le 1er fichier a été modifié à 00:00:00 et facilement trouvé par « find » à 01:00:00.

Ensuite, supposons que le 10 000e fichier ait également été modifié à 00:00:00

mais est maintenant à 01:10 : 00 et « find » travaille toujours dur pour atteindre le 10 000e fichier

Alors maintenant, 70 minutes plus tard, « find » retournera le 10 000e fichier qui a été modifié à 00:00:00?

Réponse

Dans GNU find, lheure de référence qui sert à évaluer les fichiers avec -mmin etc. sont calculés et stockés lorsque lexpression est analysée , donc en vigueur lorsque find démarre.

Cela signifie que toutes ces comparaisons de temps utilisent la même référence de temps pour tous les fichiers évalués, lheure à laquelle find a analysé sa ligne de commande.

Réponse

En supposant que GNU find, ceci est facilement testé:

% mkdir foo; cd foo; touch a b % find -mmin 1 . ./a ./b % find -mmin 1 -exec sleep 120 \; -print . # 2 minutes wait before this showed up ./a # another 2 minutes before this showed up ./b # and another 2 minutes for this one % find -mmin 1 % 

Donc, même si b a été modifié pour la dernière fois au moins 4 minutes après lexécution de find sleep 120 pour a, il correspond toujours.


Puisque -mmin nest pas « t POSIX, cela dépend de limplémentation, mais je » mattendrais au comportement vu ci-dessus.

Commentaires

  • FW IW, le (basé sur FreeBSD?) find sur mon Mac affiche également les deux fichiers avec find . -mmin 1 -exec sleep 120 \; -print

Réponse

Essayez la commande suivante lune après lautre dans deux terminaux

Terminal 1:

find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep "/path/to/some/file" 

Terminal 2:

touch -d " 0 seconds ago" /path/to/some/file 

nous pouvons obtenir le résultat comme

Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file 

I » m préfixe lheure de début de la commande avec le résultat de la recherche. il montre que find est capable de rechercher les fichiers qui sont modifiés après lheure de début de la commande.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *