Recherche de site Web

Façons d'utiliser la commande « find » pour rechercher des répertoires plus efficacement


Ce tutoriel vous présentera les différentes manières de trouver un répertoire sous Linux. Comme vous le savez peut-être déjà, sous Linux, tout est un fichier comprenant des répertoires. Et l'une des choses courantes qu'un utilisateur Linux fera dans la ligne de commande est de rechercher un fichier ou un répertoire.

Il existe plusieurs moyens et utilitaires différents utilisés pour rechercher des fichiers sur la ligne de commande, tels que find, locate et which. Cependant, le dernier utilitaire (qui) n'est utilisé que pour localiser une commande.

Dans le cadre de ce didacticiel, nous nous concentrerons principalement sur l'utilitaire de recherche, qui recherche des fichiers sur un système de fichiers Linux actif et est plus efficace et plus fiable que locate.

L'inconvénient de locate est qu'il lit une ou plusieurs bases de données créées par updatedb, il ne recherche pas dans un système de fichiers actif. De plus, il n’offre pas aussi de flexibilité quant à l’endroit à partir duquel effectuer la recherche (point de départ).

Vous trouverez ci-dessous la syntaxe pour exécuter la commande locate :

locate [option] [search-pattern]

Pour démontrer l'inconvénient de locate, supposons que nous recherchons un répertoire nommé pkg dans le répertoire de travail actuel.

Remarque : Dans la commande ci-dessous, l'option --basename ou -b indique localiser< pour correspondre uniquement au nom de base du fichier (répertoire) (qui est exactement pkg) mais pas au chemin (/path/to/pkg). Où \ est un caractère global, il désactive le remplacement implicite de pkg par *pkg*.

locate --basename '\pkg'

Comme vous pouvez le voir dans le résultat de la commande ci-dessus, locate effectuera la recherche en commençant par le répertoire racine (/), c'est pourquoi les autres répertoires portant le même nom correspondent.

Par conséquent, pour résoudre ce problème, utilisez find en suivant la syntaxe simplifiée ci-dessous :

find starting-point options [expression]

Regardons quelques exemples.

Pour rechercher le même répertoire (pkg) ci-dessus, dans le répertoire de travail actuel, exécutez la commande suivante, où l'indicateur -name lit l'expression qui dans ce cas est le nom de base du répertoire.

find . -name "pkg"

Si vous rencontrez des erreurs « Autorisation refusée », utilisez la commande sudo comme ceci :

sudo find . -name "pkg"

Vous pouvez empêcher find de rechercher d'autres types de fichiers à l'exception des répertoires en utilisant l'indicateur -type pour spécifier le type de fichier (dans la commande ci-dessous, d signifie répertoire) comme suit :

sudo find . -type d -name "pkg"

De plus, si vous souhaitez lister le répertoire dans un format de liste longue, utilisez le commutateur d'action -ls :

sudo find . -type d -name "pkg" -ls

Ensuite, l'option -iname permettra une recherche insensible à la casse :

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

Pour trouver des informations d'utilisation plus intéressantes et avancées, lisez les pages de manuel de find et locate.

man find
man locate

Comme dernière remarque, la commande find est plus fiable et efficace pour rechercher des fichiers (ou répertoires) dans un système Linux par rapport à la commande locate.

De la même manière que précédemment, n'oubliez pas de nous faire part de vos retours ou questions via la section commentaires ci-dessous. Enfin, restez toujours connecté à Tecmint.