Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > La recherche de fichier ou dans les fichiers

La recherche de fichier ou dans les fichiers

Cet article présente plusieurs méthodes de recherche sur le système de fichier.

Il est effectivement possible de chercher plusieurs choses pour trouver un fichier, à commencer par son nom lui-même, mais aussi par une chaine de texte dans son contenu.

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) :

  1. sudo updatedb

Rechercher un fichier :

  1. 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 :

  1. 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 :

  1. find . -name index.html

Pour rechercher le fichier index.html dans un répertoire particulier (ici /var/www/), on utilisera la commande :

  1. 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 :

  1. 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é :

  1. 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 :

  1. 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 :

  1. which ps

La commande précédente doit retourner /bin/ps qui est le chemin de la commande ps.

  • Auteur :
  • Publié le :
  • Mis à jour : 04/02/13

Aucun commentaire


Qui êtes-vous ?
  • [Se connecter]
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.