Formation PUB110 : Linux, 2018 Le système de fichiers

3.2 Rechercher un fichier (find)


Savoir rechercher efficacement un fichier sous Linux est certainement le meilleur gagne-temps pour un programmeur.

La commande find vous permettra d'effectuer différentes recherches. Elle utilise la syntaxe suivante :

Syntaxe de commande Linux

find chemin options

Pour rechercher un fichier par son nom :

Commande Linux

find / -name logo.png

Pour ne pas voir les messages "Permission denied", on redirige la sortie d'erreur standard (stderr, soit la sortie no 2) vers le néant :

Commande Linux

find ~ -name preferences.txt 2>/dev/null

Rechercher une chaîne de caractères dans un fichier

Pour rechercher les fichiers contenant une chaîne de caractère précise, on combine find avec grep. Puisque cette commande est plus longue à exécuter, on prendra soin de limiter la recherche aux fichiers réguliers (-type f) pour éviter de traiter les fichiers spéciaux (ex : block, named pipe, symbolic link, socket)

Commande Linux

find ~/Code/MonProjet -type f -name *.blade.php | xargs grep 'class="important"'

Ici encore, on peut rediriger la sortie d'erreur standard. Il faut prendre soin d'ajouter l'instruction avant le "|" :

Commande Linux

find ~/Code/MonProjet -type f -name *.blade.php 2>/dev/null | xargs grep 'class="important"'

Rechercher les fichiers modifiés depuis X temps

find permet également de rechercher les fichiers modifiés depuis 24h :

Commande Linux

find ~ -mtime -1

ou depuis 5 minutes :

Commande Linux

find ~ -mmin -5

Exclure un dossier de la recherche

Pour rechercher les fichiers dont le nom se termine par .json dans le dossier courant et ses sous dossiers à l'exception du sous-dossier vendor :

Commande Linux

find . -name *.json -not -path "./vendor/*"

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre