Manuel de l'Utilisateur Expérimenté Solaris

Recherche de fichiers (find)

La commande find recherche les fichiers répondant aux critères précisés, en partant du répertoire indiqué. Par exemple, vous pouvez rechercher les noms des fichiers dont le nom correspond à un modèle particulier, ou ceux qui ont été modifiés au cours d'une période donnée.

Contrairement à la plupart des commandes, les options de la commande find comportent plusieurs caractères ; le nom du répertoire de départ doit précéder l'intitulé de ces options, comme indiqué sur la ligne de commande suivante :

$ find répertoire options

répertoire désigne le nom du répertoire de départ, et options désigne les options relatives à la commande find.

Chaque option décrit un critère de sélection de fichier. Pour être sélectionné, un fichier doit répondre à l'ensemble des critères indiqués. Ainsi, plus le nombre d'options utilisées est grand, plus la recherche est affinée. L'option -print permet d'afficher les résultats de la recherche. (Comme expliqué ultérieurement, vous pouvez utiliser la commande find pour exécuter des commandes. Dans ce cas, vous pouvez lui demander de ne pas afficher les fichiers sélectionnés, pour éviter la répétition.)

L'option -name nom_ fichier demande à la commande find de sélectionner les fichiers qui correspondent à nom_ fichier. Ici, nom_ fichier est le composant le plus à droite du chemin d'accès complet d'un fichier. A titre d'exemple, le composant le plus à droite du chemin d'accès du fichier /usr/lib/calendar est calendar. Cette partie du nom d'un fichier est souvent appelée nom principal.

Pour afficher la liste des fichiers se terminant par s dans le répertoire courant et dans ses sous-répertoires, tapez :

$ find . -name '*s' -print
./programs
./programs/graphics
./programs/graphics/gks
./src/gks
$

Il existe d'autres options, telles que :

-name nom_ fichier

Sélectionne les fichiers dont le composant le plus à droite correspond à nom_ fichier. Placez nom_ fichier entre apostrophes s'il comporte des paramètres de substitution de nom de fichier.

-user ID_ utilisateur

Sélectionne les fichiers appartenant à ID_ utilisateur. ID_ utilisateur pouvant être un nom de connexion ou un numéro d'ID utilisateur.

-group groupe

Sélectionne les fichiers appartenant à groupe.

-m time n

Sélectionne les fichiers qui ont été modifiés dans une période de n jours.

-newer fichier_contrôle

Sélectionne les fichiers dont la modification est plus récente que celle de fichier_contrôle.

Vous pouvez indiquer un ordre de priorité en groupant les options entre parenthèses (despécialisées) (par exemple, \(options\) ). A l'intérieur de parenthèses despécialisées, vous pouvez utiliser l'indicateur -o entre les options pour que la commande find sélectionne les fichiers répondant à l'une des catégories uniquement, et non aux deux :

$ find . \( -name AAA -o -name BBB \) -print
./AAA
./BBB

Vous pouvez inverser le sens de l'option en la faisant précéder d'un point d'exclamation despécialisé. Dans ce cas, la commande find sélectionne les fichiers pour lesquels l'option ne s'applique pas :

$ find . \!-name BBB -print
./AAA

Vous pouvez également utiliser la commande find pour appliquer des commandes au fichier que celle-ci a sélectionné, en utilisant l'option :

-exec commande '{}' \;

Cette option se termine par un point-virgule despécialisé (\;). Les accolades entre apostrophes sont remplacées par les noms des fichiers sélectionnés par la commande find.

A titre d'exemple, vous pouvez utiliser la commande find pour supprimer automatiquement les fichiers de travail temporaires. Si vous nommez vos répertoires de travail de manière cohérente, vous pouvez utiliser la commande find pour les rechercher et les détruire, où qu'ils se trouvent. Par exemple, si vous nommez vos répertoires de travail junk ou dummy, cette commande les trouvera, puis les supprimera :

$ find . \( -name junk -o -name dummy \) -exec rm '{}' \;

Pour plus d' informations sur find(1), reportez-vous aux man Pages(1): User Commands.