
Tout sous Linux est stocké dans des répertoires, et lors de l'écriture de scripts bash, il est souvent utile de rechercher des répertoires par nom. Heureusement, vous pouvez utiliser la commande find pour rechercher de manière récursive des noms de répertoires et afficher les correspondances.
Recherche de répertoires
La commande find est utilisée pour rechercher dans les répertoires sous Linux. Par défaut, il est entièrement récursif, il recherchera donc dans tous les sous-répertoires pour trouver des correspondances.
Si vous utilisez l'indicateur -type d, la recherche fonctionnera en mode “répertoire”. ,” et ne rechercher que des répertoires, ne correspondant à aucun fichier. Vous pouvez l'utiliser avec -name pour rechercher des répertoires par nom :
find . -type d -name “search”

Cette commande démarre dans le répertoire courant mais peut également rechercher dans d'autres répertoires comme ~.
Le problème avec l'utilisation de -name est qu'il ne correspondra qu'aux noms directs, ce qui signifie qu'il échouera à moins qu'il ne corresponde au nom complet du répertoire. Vous pouvez cependant utiliser des caractères génériques pour résoudre ce problème, et placer un caractère générique avant et après la chaîne de recherche correspondra à la sous-chaîne n'importe où dans le nom du répertoire. Si vous incluez également des noms de fichiers, vous pouvez utiliser des caractères génériques pour faire correspondre les fichiers se terminant par une extension particulière
find . -type d -name “*recherche*”

Cependant, cela ne correspondra qu'au nom du répertoire et ignorera toujours le répertoire parent. Si vous souhaitez faire correspondre le chemin d'accès complet au fichier, vous devez utiliser l'option Regex décrite ci-dessous.
find imprimera une liste de tous les répertoires correspondants, mais vous devrez faire attention à vous assurer que vous êtes cohérent dans l'utilisation des chemins absolus ou relatifs, car cela affectera la réponse finale. Si vous utilisez un chemin relatif, comme le point pour “répertoire actuel,” les réponses seront relatives. Mais si vous spécifiez le chemin directement, même s'il s'agit du répertoire courant, le chemin sera absolu, commençant à la racine.
find fait également plus qu'une simple recherche de texte ; il peut être utilisé pour rechercher des fichiers en fonction de l'horodatage, de la taille des fichiers et d'autres identifiants Linux. Il peut également être utilisé avec -exec pour exécuter des commandes sur chaque fichier ou répertoire.
RELATED :Comment utiliser la commande find sous Linux
Rechercher avec Regex
RELATEDComment utilisez-vous réellement Regex ?
Vous pouvez également utiliser un filtrage plus avancé avec find, en l'utilisant avec des expressions régulières (Regex) pour trouver des correspondances pour des requêtes de recherche complexes.
L'un des principaux avantages de l'utilisation de Regex est qu'il correspond à l'intégralité du répertoire, y compris les répertoires de base menant à.
Vous pouvez utiliser Regex avec -regex au lieu de -name. Il est également utile d'activer Regex compatible avec sed en utilisant -regextype sed.
find . -type d -regextype sed -regex “.*one/.*”

Dans cet exemple, l'expression régulière commence par .*one pour correspondre à tous les répertoires se terminant par “one.” Le point et le caractère générique correspondront à toute sous-chaîne menant à ceci. Ensuite, la barre oblique est échappée avec /pour correspondre à la fin du répertoire, puis un autre caractère générique pour correspondre à n'importe quel nom de répertoire.
Globalement, cela correspondra à tout répertoire dont le parent se termine par “un ,” n'importe où, même dans les sous-répertoires. Regex est puissant, et vous voudrez faire attention à ce que le vôtre corresponde exactement à ce que vous voulez qu'il fasse, ni plus, ni moins.
Utiliser grep avec find
Étant donné que la recherche peut également générer une liste brute de répertoires, elle peut être redirigée vers d'autres commandes pour le traitement. Par exemple, grep est utilisé comme utilitaire de recherche de texte et est rapide à utiliser sur la ligne de commande pour une recherche et une mise en surbrillance simples.
find . -type d | grep foo

grep est également un utilitaire de recherche à part entière et peut être utilisé avec des outils tels que expressions pour améliorer la recherche. Vous pouvez lire notre guide d'utilisation pour en savoir plus.
CONNEXE : Comment utiliser la commande grep sous Linux
LIRE LA SUITE < ul id="nextuplist">