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 9.1 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 blocs9.1 :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 (voir section 1.9.6 page ) :find . -perm 755 -print ou ayant au minimum les droits d’écriture pour le groupe :find . -perm -020 -print
- Pour éxecuter la commande
ls -lpour 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, etfind . \( -name ‘*.tex’ -o -name ‘*.dvi’ \) -print affiche tous les fichiers se terminant par « .tex » ou « .dvi ».