find

L'outil find est très puissant dans Unix, et nous permet de chercher des fichiers ou répertoires :

  • par son nom

  • par son contenu

  • ... et effectuer des actions sur les résultats.

Le syntaxe simple de find est le suivant :

find [repertoire de recherche] –[type de recherche] [critères de recherche]

Par exemple, pour chercher tous les fichiers (à partir du répertoire actuel) avec le nom qui commence par utils :

find . -name "utils.*"

# . = commencer dans le répertoire actuel
# -name = on va chercher dans le nom du fichier
# "utils.*" il faut commencer par le mot "utils." avec n'importe quelle extension (representé par l'asterisk *)

Pour trouver les répertoires avec "util" dans le nom :

find . -name "*util*" -type d

Rappelez, vous pouvez apprendre plus de paramètres avec man find. Ou bien chercher en-ligne, par exemple, ce résumé

Effectuer une action sur les fichiers trouvés

find permet non-seulement de chercher des fichiers, mais aussi d’en faire quelque chose :

find . -name [critères] -exec [commande à executer] \;

## Attention ! la commande doit terminer par \;

Exemple, lister les répertoires, et afficher leur nom avec un morceau de texte personnalisé devant :

hetic@eabaf4e7983c:~$ find . -name "*util*" -type d -exec echo "Voici un fichier : {}" \;
Voici un fichier : ./node-main/lib/internal/util
Voici un fichier : ./node-main/lib/util

Ici, find exécute la commande echo pour chaque répertoire trouvé, et affiche le resultat Voici un fichier : {}

Les accolades {} sont remplacés par chaque nom de répertoire.

Bien sur il serait plus intéressant d'utiliser des commandes dans exec qui sont plus utiles, comme, change le nom du fichier, le supprimer, le modifier etc.

Dernière mise à jour