Nous allons au travers d’exemples voir comment rechercher des fichiers avec la commande find.
Rechercher un fichier spécifique dans un répertoire donné
La commande find dispose de l’option -name qui permet de spécifier le nom du fichier à rechercher. Par exemple pour rechercher un fichier nommé debian.txt dans le répertoire /home nous utiliserons la commande find suivante :
| admin@debian:~$ find /home/admin -name debian.txt /home/admin/documents/debian.txt |
Rechercher un fichier dans tous les répertoires de la machine
Si vous souhaitez rechercher un fichier dans tous les répertoires du système, il faut se connecter en root. Sans être root vous n’aurez pas les droits de lecture nécessaire à parcourir tous les répertoires.
Par exemple pour rechercher un fichier nommé debian.txt dans tous les répertoires du système il faut en tant que root utiliser la commande find suivante :
| root@debian:~$ find / -name debian.txt |
Si vous ne connaissez pas le nom exacte de votre fichier alors vous pouvez utiliser les méta-caractères du Shell. Ainsi la commande :
| root@debian:~$ find / -name deb* |
parcourt tous les répertoires du système à la recherche des fichiers commençant par la chaîne de caractères « deb »
On peut de la même manière recherche par exemple tous les fichiers qui finissent par l’extension *jpg, ainsi la commande find :
| root@debian:~$ find / -name *jpg |
recherche au sein du système tous les fichier ayant l’extension jpg.
Rechercher des fichiers contenant une expression particuliere specifiée
Dans l’exemple ci-dessous nous recherchons dans tous les fichiers .cpp l’expression spécifiée (le resultat sera dans : /tmp/fichier_sortie). Le resultat affichera tous les fichiers contenant cette expression.
| find . -name '*cpp' | xargs grep -l expression_recherchée > /tmp/fichier_sortie |
Rechercher dans les fichiers .cpp et .h l’expression donnée :
| find . \( -name '*cpp' -o -name '*h' \) | xargs grep -l expression_recherchée > /tmp/fichier_sortie |