Utilisation de find -mmin pour rechercher des fichiers avec un temps de modification dans le futur


9

je peux utiliser

find . -mmin -5

pour trouver les fichiers modifiés au cours des 5 dernières minutes. Cependant, si j'essaye de trouver des fichiers avec un temps de modification dans le futur en donnant un nombre négatif findrefuse de le faire:

find . -mmin --1

Existe-t-il un moyen de donner le temps de modification future au Linux standard find?

Réponses:


9

Pour rechercher des fichiers modifiés au moins 5 jours à l'avenir, utilisez:

find . -newermt "5 days"

La syntaxe de la spécification d'heure correspond à celle de date -d. Voir man findpour plus d'informations sur le commutateur nommé -newerXYpour plus d'informations.

Il n'est pas possible d'utiliser par exemple -mminpour ce faire. Il a été signalé comme un bug contre GNU find , et a été résolu en implémentant -newerXYdans findutils 4.3.3 (~ 2007) comme je l'ai montré ci-dessus.


Apparemment, ce n'est pas GNU find qui a été utilisé, mais BusyBox.

Vous devriez ensuite pouvoir créer un fichier temporaire avec touch -det une date dans le futur, puis utiliser le -newercommutateur pour, findpar exemple:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchne prend pas en charge ce format de date, mais le principe est le même et ses findsupports -newer. La création du fichier de référence avec une date correcte reste un exercice pour le lecteur (toujours pratique à écrire).


Merci. Mon problème est que ma recherche est une ancienne recherche BusyBox intégrée et non une recherche binutil. Apparemment, la méthode Linux standard ne fonctionne pas ici. :(
Muxecoid

@Muxecoid: J'ai mis à jour ma réponse avec quelques remarques BusyBox.
Daniel Andersson

Cela m'a juste sauvé des ennuis sur une nouvelle machine où j'avais fait quelque chose dans le futur dix heures par accident (décalage du fuseau horaire appliqué à une horloge matérielle déjà décalée) et après avoir corrigé l'horloge, un configurescript s'est plaint des choses à venir (par un environ une heure et demie): find . -newermt '1 hour' | xargs touch -d '-9 hours'et je peux continuer. :-)
Chris Morgan
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.