
RHEL 10 - La commande find
La commande find est une commande Linux très utile, notamment lorsqu'on est confronté à un grand nombre de fichiers et de dossiers. Elle permet de trouver des éléments, par leur nom, leur type, leur taille, leur date et bien d'autres paramètres.
Structure basique de la commande
find /chemin/où/chercher test action
Critères basiques
-name→ par nom-iname→ par nom (ignorer la casse)-type→ par type-size→ par taille-user→ par utilisateur propriétaire-group→ par groupe propriétaire-perm→ par permissions-empty→ sans contenu-executable→ fichiers exécutables ou dossier traversables
Exemples simples
-
Chercher tous les fichiers ayant l'extension
.confdans le dossier/etcfind /etc -name "*.conf" -
Chercher tous les fichiers cachés dans le dossier
/home/labuser1find /home/labuser1/ -type f -name ".*" -
Chercher tous les fichiers de plus de 50Ko dans le dossier
/var/logfind /var/log -type f -size +50k -
Chercher tous les liens symboliques appartenant à
rootdans le dossier/dev/diskfind /dev/disk -user root -type l -
Chercher tous les dossiers ayant pour permissions exactes
755dans le dossier/var/wwwfind /var/www -type d -perm 755
Utilisations des opérateurs et combinaisons
Opérateur logique "ou" → -o
- Chercher tous les dossiers nommés exactement
yumou contenantyumet finissant par.dfind /etc -type d -name "yum" -o -name "*yum*.d"
Opérateur logique "et" → -a
- Chercher tous les fichiers ayant pour extension
.loget tous les dossiers appartenant à l'utilisateurrootnon-vides dans le dossier/var/logfind /var/log \( -type f -name "*.log" -o -type d -user root \) -a -not -empty
Opérateur logique "non" → \! ou -not
- Chercher tous les fichiers ne finissant pas par
.logdans le dossier/var/logfind /var/log \! -name "*.log" -a -type f
Récursivité
-maxdepth→ stoppe le traitement à partir du niveau n-mindepth→ ne commence à traiter qu'à partir du niveau n
Toujours placer ces options en premier
Exemples
-
Chercher tous les fichiers dans le dossier
/var/logsans descendre dans l'arborescencefind /var/log -maxdepth 1 -type f -
Chercher tous les fichiers ayant pour extension
.confdans les sous-dossiers du dossier/etcen excluant le dossier lui-mêmefind /etc -mindepth 2 -type f -name "*.conf"
Utiliser les critères de temps
-mtime→ modifié +/-n jours-atime→ accédé +/-n jours-ctime→ créé +/-n jours-mmin→ modifié +/-n minutes-amin→ accédé +/-n minutes-cmin→ créé +/-n minutes
Exemples
-
Chercher les fichiers modifiés depuis moins d'une heure dans le dossier
/var/logfind /var/log -type f -mmin -60 -
Chercher les fichiers créés depuis moins d'un jour dans le dossier
/etc/find /etc -type f -ctime -1 -
Chercher les dossiers accédés depuis plus d'une heure dans
/tmpfind /tmp -type d -amin +60
Utiliser les critères de permissions
-perm xxx→ permissions exactes-perm -xxx→ au minimum cette permission-perm /xxx→ au moins une permission
Exemple
-
Chercher les dossiers ayant exactement les permissions
755dans le dossier/home/labuser1find /home/labuser1/ -type d -perm 755 -
Chercher les fichiers dont tous les utilisateurs ont au minimum les droits d'exécution dans le dossier
/usr/binfind /usr/bin/ -type f -perm -111 -
Chercher les dossiers où le groupe propriétaire ou les autres ont au minimum le droit en lecture dans
/var/wwwfind /var/www -type d -perm /044 -
Chercher tous les fichiers à la racine du système ayant un SUID activé
find / -type f -perm /4000 -
Chercher tous les dossiers à la racine du système ayant un SGID activé
find / -type d -perm /2000
Utiliser des actions
-
Chercher et supprimer tous les fichiers ayant pour extension
.jpgdans le dossier/home/labuser1find /home/labuser1/ -type f -name "*.jpg" -delete -
Chercher et copier dans
backup/tous les fichiers non-vides du dossier/var/logsans récursivitéfind /var/log -maxdepth 1 -type f -not -empty -exec cp {} backup/ \;{}→ le résultat de la recherche et\;→ marque la fin de la commande -
Chercher tous les fichiers non-vides du dossier
/var/logavec une récursivité de 2 niveaux et écrire le résultat danssortie.txtfind /var/log -maxdepth 2 -type f -not -empty -fprint sortie.txtLe fichier
sortie.txtsera écrasé s'il existait
Sources principales:
- https://www.redhat.com/en/blog/linux-find-command
man find
