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.