Find

, par MiKaël Navarro

GNU Find est une des commandes UNIX permettant de chercher des fichiers dans un ou plusieurs répertoires selon des critères définis.

Ex. find . -mtime -1 \! -type d permet de trouver tous les éléments modifiés dans les dernières 24h en excluant les répertoires.

Rq : l’option -print provoque l’affichage sur stdout, inutile avec GNU find.

Autres expressions utiles

 -atime +|-n accédé il y a +|-, ou exactement n jours.
 -ctime +|-n status changé il y a +|-, ou exactement n jours.
 -mtime +|-n modifié il y a +|-, ou exactement n jours.

 -follow suit les liens symboliques.

 -group grpname sélectionne le groupe grpname.
 -user username sélectionne l’utilisateur username.

 -name pattern recherche un modèle.

 -exec command {} \; exécute une commande sur la sélection.

 -type b|c|d|D|f|l|p|s filtre sur le type de fichier.

 -perm mode filtre sur les droits.

 -prune exclu les répertoires de la recherche.

Exemples d’application

 find $HOME \( -name a.out -o -name "*.o" \) -atime +7 -exec rm {} \; efface tous les fichiers a.out ou *.o qui n’on plus été accédé il y a plus d’une semaine dans le répertoire home.

 find . -name DIR -prune -o -print affiche tous les fichiers sauf ceux du répertoire DIR.

 find . -perm u=rwx,g=rx, o=rx ou find . -perm a=rwx,g-w,o-w affiche les fichiers avec les permissions exactes 755.

 find . -perm -o+w affiche les fichiers ayant au minimum le droit en écriture sur other.

 find . \! -local -prune -o -print liste les fichiers locaux

 find /tmp \! -type d -atime +2 -exec rm {} \; efface tous les fichiers non modifiés depuis plus de deux jours.

 find / -type f \( -perm -04000 -o -perm -02000 \) liste les fichiers SUID/SGID root.