locate : rechercher un fichier dans un index des fichiers du système
locate
permet de rechercher dans un index de fichiers créés par la commande updatedb
. Il est donc nécessaire que cet index soit à jour pour trouver les fichiers récents. En général, l’index est actualisé par défaut par une tache cron dans l’ensemble des distributions à intervalle régulier.
Mettre à jour l’index (il est nécessaire d’être super utilisateur pour réaliser cette action) :
- sudo updatedb
Rechercher un fichier :
- locate nomdufichier
Si la liste des résultats affichés est trop longue vous pouvez utiliser | less
pour la paginer.
find : Rechercher des fichiers sur le système en fonction de paramètres spécifiques
La commande find
permet de retrouver des fichiers dans une hiérarchie spécifique de manière précise grace à une grande diversité de paramètres. Contrairement à locate
qui se base sur une base de donnée mise à jour de temps à autre, find
se base lui sur le système de fichier pour opérer, ce qui peut poser l’inconvénient d’être long en cas de présence de nombreux fichiers.
Pour rechercher le fichier index.html
récursivement dans toute l’arborescence on utilisera la commande :
- find / -name index.html
Pour rechercher le fichier index.html
récursivement dans l’arborescence à partir de là où l’on se trouve, on utilisera la commande :
- find . -name index.html
Pour rechercher le fichier index.html
dans un répertoire particulier (ici /var/www/
), on utilisera la commande :
- find /var/www -name index.html
Pour rechercher un répertoire, on ajouter l’option -type
permettant de spécifier que l’on recherche un type de donnée spécifique. On utilise par exemple la commande suivante qui recherchera le répertoire www
dans toute l’arborescence :
- find / -type d -name www
NB : le contenu de l’option -name
est une expression régulière, on peut donc par exemple utiliser ww*
pour tout ce qui commence par ww
ou *ww
pour l’inverse.
grep : rechercher un fichier à partir de son contenu
La commande suivante permet de chercher une chaîne de caractère dans les fichiers d’un dossier spécifié :
- grep -rn "It works" /var/www/
Ici, on recherche la chaîne de caractères "It works" dans le dossier /var/www/
Les options suivantes sont utilisées mais sont facultatives :
- L’option
n
permet d’afficher le numéro de ligne ou apparait le texte recherché ; - L’option
r
permet d’effectuer cette recherche récursivement ;
Recherche dont le contenu ne correspond pas
Si vous souhaitez trouver les occurrences de fichiers ne correspondant pas à votre recherche, il faut utiliser l’option -v
Recherche de contenu en excluant des fichiers
Prenons l’exemple des fichier .svn
créés par le logiciel de versionning subversion lors de la récupération d’un projet. Ces fichier dupliquent plus ou moins le code d’un projet deux fois, une fois pour les fichiers utilisables, une seconde fois dans le répertoire temporaire .svn
.
Si l’on souhaite faire une recherche d’une chaine dans un répertoire tout en enlevant des résultats ce qui comprend .svn
on passe le résultat de grep
dans une nouvelle commande grep
à l’aide de pipe |
, qui elle va supprimer de la liste les éléments que l’on ne souhaite pas voir.
Par exemple, la commande suivante va chercher les occurrences de It works
dans le répertoire /var/www/mon_projet/
récursivement et en affichant les numéros de ligne tout en ne gardant pas les occurrences qui contiendront .svn
:
- grep -rv "It works" /var/www/mon_projet/ |grep -v ".svn"
which : rechercher une commande dans le path
La commande which
affiche le ou les chemins d’une commande particulière présente dans le PATH d’exécution de l’utilisateur en cours. Par exemple :
- which ps
La commande précédente doit retourner /bin/ps
qui est le chemin de la commande ps
.