Find

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.