====== **Utilisation de la commande find** ====== La commande ''find'' permet de chercher des fichiers, et eventuellement d'éxecuter une action dessus. Par exemple : > find . -print | less affiche la liste de tous les fichiers du répertoire courant (l'option -print est normalement incluse par défaut). On peut rediriger les messages d'erreur vers le ``trou noir%%''%% (le périphérique ''/dev/null'') : > find . -print 2> /dev/null | less ou les inclures (on rassemble alors en un seul canal la sortie standard et le sortie d'erreur standard) : > find . -print 2>&1 liste | less Les options de la commande ''find'' sont nombreuses. Le tableau  en donne un apercu. \\   ^ **Option** ^ **Signification** ^ | **-name** | Recherche par **nom** de fichier. | | **-type** | Recherche par **type** de fichier. | | **-user** | Recherche par **propriétaire**. | | **-group** | Recherche par appartenance à un **groupe**. | | **-size** | Recherche par **taille** de fichier. | | **-atime** | Recherche par date de **dernier accès**. | | **-mtime** | Recherche par date de **dernière modification**. | | **-ctime** | Recherche par date de **création**. | | **-perm** | Recherche par **autorisations d'accès**. | | **-links** | Recherche par **nombre de liens** au fichier. | \\ Pour les options -size, -atime, -mtime, -ctime et -links, il faut spécifier une valeur, précédée par le signe ``**+**%%''%% pour ``supérieur à%%''%%, ``**-**%%''%% pour ``inférieur à%%''%%, ou rien pour ``égal à%%''%%. Par exemple : > find . -mtime -3 -print affiche les fichiers dont les dernières modifications remontent à moins de **3** jours (donc tous les fichiers modifiés entre aujourd'hui et il y a trois jours seront affichés). De même, +5 afficherait les fichiers dont les dernières modifications remontent à plus de **5** jours. Voici d'autres exemples d'utilisation de la commande ''find'' : * * Pour afficher tous les fichiers se terminant par ``**.c**%%''%% : find . -name ".c" -print * Pour afficher tous les répertoires dont le nom se termine par ``**s**%%''%% : find . -type d -name "*s" -print Pour afficher tous les fichiers, on aurait utilisé le code f.\\ * Pour afficher tous les fichiers ayant une taille de 10 blocs : find . -size 10 -print ce qui est équivalent à demander la liste des fichiers ayant une taille de 5120 caractères : find . -size 5210c -print On aurait pu aussi demander la liste des fichiers ayant une taille **supérieure** (+200k) ou **inférieure** (-200k) à 200 Ko.\\ * Pour afficher tous les fichiers ayant une certaine permission exprimée en octale : find . -perm 755 -print ou ayant **au minimum** les droits d'écriture pour le groupe : find . -perm -020 -print * Pour éxecuter la commande ''ls -l'' pour chaque fichier trouvé : find . -type f -exec ls -l {} \; et pour demander confirmation avant chaque action : find . -type f -ok -exec rm {} \; Toute autre commande peut être éxecutée avec l'option -exec. * Pour associer plusieurs critères avec -a pour **et**, -o pour **ou**, ! pour **négation**. Par exemple : find . ! -user root -print affiche tous les fichiers n'appartenant à **root**, et find . \( -name %%'*%%.tex' -o -name %%'*%%.dvi' \) -print affiche tous les fichiers se terminant par ``**.tex**%%''%% ou ``**.dvi**%%''%%.