Tout dans 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 les utiliser find
Commande pour rechercher récursivement les noms de répertoire et afficher les correspondances.
Répertoires de recherche
Ce find
La commande est utilisée pour rechercher des répertoires sous Linux. Par défaut, il est entièrement récursif, donc tous les sous-répertoires sont recherchés pour une correspondance.
Si vous utilisez le -type d
Drapeau, find
fonctionne en « mode répertoire » et ne recherche que les répertoires, pas les fichiers correspondants. Vous pouvez l’utiliser en parallèle -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, par exemple ~
.
Le problème de l’utilisation -name
Il ne correspondra qu’aux noms directs, ce qui signifie qu’il échouera s’il ne correspond pas au nom complet du répertoire. Cependant, vous pouvez utiliser des caractères génériques pour résoudre ce problème, et si vous mettez un caractère générique avant et après la chaîne de recherche, la sous-chaîne correspondra 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 spécifique
find . -type d -name "*search*"
Cependant, cela correspond uniquement au nom du répertoire et ignore toujours le répertoire parent. Si vous souhaitez utiliser le chemin d’accès complet au fichier, vous devez utiliser l’option regex décrite ci-dessous.
find
imprime une liste de tous les répertoires correspondants, mais vous devez veiller à utiliser systématiquement des chemins absolus ou relatifs, car cela affectera la réponse finale. Lorsque vous utilisez un chemin relatif, comme le point pour « répertoire actuel », les réponses sont relatives. Cependant, si vous spécifiez directement le chemin, même s’il s’agit du répertoire courant, le chemin est absolu et commence à la racine.
find
également plus qu’une simple recherche de texte – il peut être utilisé pour faire correspondre 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 n’importe quel fichier ou répertoire.
LIÉS ENSEMBLE : Comment utiliser la commande Rechercher sous Linux
Recherche avec regex
Vous pouvez également utiliser le filtrage avancé avec find
en l’utilisant avec des expressions régulières (regex) pour trouver des correspondances pour des requêtes de recherche complexes.
Un avantage majeur de l’utilisation de regex est qu’il correspondra à l’intégralité du répertoire, y compris les répertoires de base qui le portent.
Vous pouvez utiliser regex avec -regex
à la place de -name
. Il aide également à allumer sed
-Utilisez des expressions régulières compatibles -regextype sed
.
Trouver . -type d -regextype sed -regex « .*un/.* »
Dans cet exemple, la regex commence par .*one
pour correspondre à tous les répertoires se terminant par « un ». Le point et le caractère générique correspondent à toute sous-chaîne précédente. Ensuite, la barre oblique est masquée par /
pour la fin du répertoire, puis un autre caractère générique pour n’importe quel nom de répertoire.
Dans l’ensemble, cela correspondra à tout répertoire dont le parent se termine par « un » où qu’il se trouve, même dans les sous-répertoires. Regex est puissant et vous devez vous assurer que le vôtre correspond exactement à ce que vous voulez, ni plus, ni moins.
Utiliser grep avec find
Depuis find
peut également générer une liste brute de répertoires, elle peut être transmise à d’autres commandes pour traitement. Par exemple, grep
utilisé comme utilitaire de recherche de texte et peut être utilisé rapidement sur la ligne de commande pour la recherche de base et la mise en surbrillance.
find . -type d | grep foo
grep
est également un utilitaire de recherche complet et peut être utilisé avec des outils tels que les expressions régulières pour améliorer les recherches. Vous pouvez lire notre guide d’utilisation pour en savoir plus.
LIÉS ENSEMBLE : Comment utiliser la commande grep sous Linux
Le post Comment rechercher récursivement des noms de répertoire sous Linux est apparu en premier sur Germanic News.