Astuce Linux : lister les fichiers selon leur âge

Introduction

Vous êtes-vous déjà demandé comment trouver des fichiers dans un répertoire qui n’ont pas été touchés depuis des lustres ? Que vous nettoyiez d’anciens fichiers, archiviez des données ou vérifiiez des fichiers obsolètes, la commande find de Linux est la solution idéale. Dans cette astuce, nous allons vous montrer comment lister les fichiers selon leur âge sous Linux à l’aide d’une commande simple mais puissante.


La commande

find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;

Cette commande vous permet de localiser les fichiers en fonction de leur date de dernière modification, de les filtrer par type ou par nom et d’afficher des informations détaillées à leur sujet.


Décomposition de la commande

1. /path/to/files

Cela indique le répertoire dans lequel effectuer la recherche. Remplacez-le par le chemin réel du dossier que vous souhaitez explorer.

  • Exemple : si vous souhaitez effectuer une recherche dans votre photothèque, utilisez ~/Pictures.

2. -type f

L’option -type permet de préciser le type d’éléments à rechercher.

  • f: désigne uniquement les fichiers (ignore les répertoires).

3. -name '*.jpg'

Cela filtre les résultats en fonction des noms de fichiers ou des extensions.

  • Exemple : *.jpg recherche les fichiers qui se terminent par .jpg.
  • Vous pouvez le remplacer par d’autres modèles, comme *.txt pour les fichiers texte ou *.log pour les fichiers journaux.

4. -mtime +30

C’est la clé pour filtrer les fichiers en fonction de leur âge.

  • +30: recherche les fichiers modifiés pour la dernière fois il y a plus de 30 jours.
  • Remplacez 30 par le nombre de votre choix, selon vos besoins :
    • 1 an: utilisez -mtime +365.
    • 1 semaine: utilisez -mtime +7.

5. -exec ls -l {} \;

Cela indique à Linux ce qu’il faut faire des fichiers trouvés.

  • -exec: exécute une commande sur chaque fichier.
  • ls -l: affiche des informations détaillées sur chaque fichier (par exemple, la taille, les autorisations, le propriétaire et la date de dernière modification).
  • {}: espace réservé pour chaque fichier trouvé.
  • \;: signale la fin de la commande.

Astuce de pro

Vous souhaitez tester la commande sans exécuter ls -l ? Omettez la partie -exec :

find /path/to/files -type f -name '*.jpg' -mtime +30

Cela listera simplement les chemins des fichiers, sans détails supplémentaires.


Pourquoi utiliser cette commande ?

La commande find est incroyablement polyvalente et utile pour les tâches de maintenance du système :

  • Libérer de l’espace disque: identifier et supprimer les anciens fichiers.
  • Archiver les données plus anciennes: déplacer vers un stockage de sauvegarde les fichiers intouchés depuis des mois ou des années.
  • Surveiller les fichiers obsolètes: vérifier la présence de fichiers obsolètes dans les répertoires critiques.

Exemples pratiques

Exemple 1 : rechercher d’anciens documents

Recherchez les fichiers .docx dans votre dossier Documents qui n’ont pas été modifiés depuis plus de 90 jours :

find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;

Exemple 2 : localiser les fichiers volumineux de plus de 6 mois

Recherchez les fichiers de plus de 100 Mo dans /home/user qui n’ont pas été modifiés depuis plus de 6 mois :

find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
  • -size +100M: filtre les fichiers de plus de 100 Mo.
  • ls -lh: affiche la taille des fichiers dans un format lisible (par exemple, Mo, Go).

Exemple 3 : rechercher d’anciens PDF

Recherchez les fichiers .pdf dans /home/user/Downloads qui n’ont pas été modifiés depuis un an :

find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;

Exemple 4 : rechercher les fichiers modifiés récemment

Recherchez les fichiers .txt modifiés au cours des 7 derniers jours dans /var/www:

find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
  • -mtime -7: recherche les fichiers modifiés au cours des 7 derniers jours.

Exemple 5 : supprimer les anciens fichiers temporaires

Supprimez les fichiers dans /tmp qui n’ont pas été modifiés depuis plus de 30 jours :

find /tmp -type f -mtime +30 -exec rm {} \;
  • rm: supprime les fichiers.
  • Avertissement: à utiliser avec prudence, car cela supprime définitivement les fichiers.

Exemple 6 : archiver les anciens fichiers multimédias

Déplacez les fichiers .mp4 de plus de 60 jours depuis ~/Videos vers un dossier d’archive :

find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
  • mv: déplace les fichiers vers le dossier indiqué.

Exemple 7 : rechercher les fichiers créés dans une plage de dates précise

Recherchez les fichiers .log créés il y a entre 30 et 60 jours dans /var/log:

find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
  • -mtime +30: fichiers de plus de 30 jours.
  • -mtime -60: fichiers modifiés au cours des 60 derniers jours.

Exemple 8 : rechercher les fichiers vides de plus d’une semaine

Localisez les fichiers vides dans /home/user qui n’ont pas été modifiés au cours de la dernière semaine :

find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
  • -empty: filtre les fichiers de taille nulle.

Exemple 9 : rechercher les fichiers par date d’accès

Recherchez les fichiers .png dans /var/www/html qui n’ont pas été consultés au cours des 90 derniers jours :

find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
  • -atime: filtre les fichiers par date d’accès plutôt que par date de modification.

Exemple 10 : rechercher les fichiers créés récemment

Localisez les fichiers dans /home/user créés au cours des 3 derniers jours :

find /home/user -type f -ctime -3 -exec ls -l {} \;
  • -ctime: filtre les fichiers par date de création.

Exemple 11 : rechercher les fichiers par autorisations

Recherchez les fichiers dans /etc avec des autorisations spécifiques (par exemple, accessibles en écriture par d’autres) :

find /etc -type f -perm /o+w -exec ls -l {} \;
  • -perm /o+w: recherche les fichiers accessibles en écriture par d’autres.

Exemple 12 : localiser les fichiers modifiés au cours de la dernière heure

Recherchez les fichiers modifiés au cours de la dernière heure dans /home/user/Documents:

find ~/Documents -type f -mmin -60 -exec ls -l {} \;
  • -mmin -60: filtre les fichiers modifiés au cours des 60 dernières minutes.

Exemple 13 : rechercher les fichiers appartenant à un propriétaire précis

Recherchez les fichiers appartenant à l’utilisateur jose dans /var/log qui n’ont pas été modifiés depuis plus de 90 jours :

find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
  • -user jose: filtre les fichiers appartenant à l’utilisateur indiqué.

Exemple 14 : exclure des répertoires précis

Recherchez les fichiers .jpg dans /home/user de plus de 30 jours, en excluant le dossier Downloads :

find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
  • -not -path: exclut les fichiers du répertoire indiqué.

Exemple 15 : rechercher les fichiers modifiés à une date précise

Recherchez les fichiers modifiés il y a exactement 10 jours dans /home/user:

find /home/user -type f -mtime 10 -exec ls -l {} \;
  • -mtime 10: recherche les fichiers modifiés il y a exactement 10 jours.

Exemple 16 : localiser les fichiers avec des extensions précises

Recherchez les fichiers .zip et .tar.gz de plus de 60 jours dans /backups:

find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
  • \( -name '*.zip' -o -name '*.tar.gz' \): recherche plusieurs extensions de fichiers.

Conclusion

La commande find de Linux est un outil puissant pour gérer les fichiers en fonction de leur âge, de leur type et de leur nom. Que vous libériez de l’espace disque, archiviez d’anciennes données ou surveilliez les fichiers obsolètes, cette commande vous donne un contrôle total sur vos répertoires.

Essayez-la dès aujourd’hui et passez vos compétences Linux au niveau supérieur !

Laisser un commentaire