# Linux find - Lister les fichier en fonction d'une date

# De quelle date on parle ?

Sous linux, il y a 3 timestamps enregistrés par le système de fichiers pour chaque fichier et dossier.

  • mtime (modification time): dernière date à laquelle le contenu du fichier a changé
  • atime (access time): dernière date à laquelle le fichier a été accédé
  • ctime (change time): dernière date à laquelle le fichier a changé en prenant en compte les modifications de contenu et de métadonnées, comme le propriétaire du fichier et les permissions associées.

WARNING

Sous linux, les systèmes de fichier n'ont pas l'obligation de stocker la date de création (même si certains le font, comme ext4). C'est la raison pour laquelle la plupart des commandes n'incluent pas cette notion de date de création dans leurs options.

Pour chercher des fichiers par rapport à une date donnée, il faut donc préciser de quelle date on parle.

# find: tester par rapport à une date

Il y a plusieurs options qui peuvent être utilisées pour trouver des fichiers et des dossiers avec find par rapport à une date. Dans la suite, X et Y doivent être remplacés par a, m ou c suivant la date de fichier à laquelle on souhaite se référer.

Options Description
-Xtime n compare le Xtime des fichiers à un nombre n de jour par rapport à maintenant
-Xmin m compare le Xtime des fichiers à un nombre m de minutes par rapport à maintenant
-newerXt date compare le Xtime des fichiers par rapport à une date donnée
-newerXY fichier compare le Xtime des fichiers au Ytime d'un autre fichier

# Par rapport à un nombre n de jours

Avec les options -Xtime et -Xmin, on peut soit chercher des fichiers dont le Xtime est plus récent ou plus vieux que les n derniers jours, en ajoutant respectivant - et + devant le nombre de jours n:

  • Trouver des fichiers dans le dossier courant modifié dans les n derniers jours:
> find . -mtime -2 days # n = 2
1
  • Trouver des fichiers dans le dossier courant accédé dans les n derniers jours
> find . -atime +2 days # n = 2
1

Pour calculer le timestamp exact utilisé pour la comparaison, find soustrait le Xtime du fichier au timestamp courant et compare le résultat modulo 24 à n.

TIP

Il est également possible d'utiliser le début de la journée au lieu du timestamp courant avec l'option positionnelle -daystart:

> find . -daystart -mtime +2 days # n = 2
1

# Par rapport à une date donnée

L'option -newerXt permet de trouver des fichier avec un Xtime avant ou après une date donnée:

  • Trouver des fichiers dans le dossier courant modifié après une date donnée:
> find . -newermt '2019-05-28 23:00'
1
  • Trouver des fichiers dans le dossier courant changé après avant une date donnée:
> find . ! -newerct '2019-05-28 23:00'
1

TIP

Avec find l'opérateur ! (ou -not) s'utilise pour inverser le résultat du test qui suit.

  • Trouver des fichiers dans le dossier courant modifié entre deux dates: combiner les tests
> find . -newermt '2019-05-28 23:00' -not -newermt '2019-05-29 23:00'
1

# Par rapport à la date d'un autre fichier

  • Trouver des fichiers dans le dossier courant modifié après le dernier accès à ./file1:
> find . -newerma ./file1
1

# Date de création (birth date)

Si votre système de fichier enregistre la date de création des fichiers, X et Y peuvent être remplacés par B pour tester cette date de création (pour birth date).

  • Trouver des fichiers dans le dossier courant créé avant une date donnée
> find . ! -newerBt '2019-05-28 23:00'
1

Si votre système de fichier n'enregistre pas la date de création, find échoue avec le message suivant:

find: This system does not provide a way to find the birth time of a file.
find: invalid predicate `-newerBt'
1
2
Dernière mise à jour: 7/1/2019, 4:08:10 PM