Recherche par horodatage de fichier
Les systèmes de fichiers Unix/Linux ont trois types d'horodatage sur chaque fichier. Ils sont les suivants :
- Heure d'accès (-atime) :L'horodatage du dernier accès au fichier.
- Heure de modification (-mtime) :L'horodatage de la dernière modification du fichier.
- Modifier l'heure (-ctime) :L'horodatage de la dernière modification des métadonnées d'un fichier (telles que les autorisations ou la propriété).
Rechercher et supprimer un fichier de plus de 7 jours
Prenons un exemple, dans lequel nous trouverons et supprimerons un fichier de plus de 7 jours. Nous utiliserons l'option "-mtime ” de la commande find pour cela.
1. Obtenez une liste de fichiers à l'aide de la commande find comme suit :
# find /path_to_directory -mtime +7 -type f -exec ls {}\;
2. Si les noms de fichiers commencent par un modèle particulier, filtrez-le comme suit :
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec ls {}\;
3. Après avoir vérifié et confirmé la sortie, optez pour le script de suppression (c'est très IMPORTANT), sinon il y aura une perte de données irrécupérable.
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {}\;
4. Si cela doit être fait sur un serveur distant via le travail cron et enregistrer les noms de fichiers des fichiers supprimés, utilisez la commande suivante
# ssh user@remote_ip "find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {} \; >> /tmp/backup_deletion`date +%Y%m%d`.log 2>&1"
Conclusion
Le -mtime le paramètre recherchera les fichiers en fonction de l'heure de modification ; -ctime recherche en fonction de l'heure de changement. Les durées d'utilisation -atime, -mtime et -ctime sont mesurées en jours. La commande find prend également en charge les options qui mesurent en minutes. Ce sont les suivants :
- -amin (temps d'accès)
- -mmin (heure de modification)
- -cmin (modifier l'heure)
Par exemple, pour imprimer tous les fichiers dont le temps d'accès est supérieur à sept minutes, utilisez la commande suivante :
# find . -type f -amin +7 -print
-option plus récente
L'option -newer spécifie un fichier de référence avec une heure de modification qui sera utilisée pour sélectionner les fichiers modifiés plus récemment que le fichier de référence.
Trouvez tous les fichiers qui ont été modifiés plus récemment que le fichier file.txt :
# find . -type f -newer file.txt -print