web-dev-qa-db-fra.com

Comment puis-je rechercher récursivement des noms de répertoire avec une chaîne particulière où la chaîne ne représente qu'une partie du nom du répertoire

Comment puis-je rechercher de manière récursive des noms de répertoire avec une chaîne particulière où la chaîne ne représente qu'une partie du nom du répertoire?

Par exemple: le nom du répertoire est "8.0.3-99966_en", mais je souhaite rechercher de manière récursive des répertoires avec la chaîne "99966".

67
Bob Perez

Vous pouvez utiliser la commande find:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Exemple:

find ~ -type d -name "*99966*" -print

devrait trouver tous les répertoires (-type d) à partir de votre répertoire personnel (~) dont le nom contient la chaîne "99966" (-name "*99966*") et les afficher (-print).

90
lgarzo

Pour éviter tous les résultats "Autorisation refusée", vous pouvez utiliser:

find / -type d -name "*99966*" -print 2>/dev/null

Voir cet article sur périphérique null et celui-ci sur flux standard pour plus d'informations.

18
Dan Fletcher

Vous pouvez diriger la sortie vers greppour qu’elle mette en surbrillance le nom du répertoire.
Quelque chose comme

find / -type d | grep "directory name"

Le / indique une recherche dans tout l'ordinateur

7
Collin

Un moyen facile de faire cela consiste à utiliser find | egrep string. S'il y a trop de résultats, utilisez l'indicateur -type d pour find. Exécutez la commande au début de l’arborescence de répertoires dans laquelle vous souhaitez effectuer la recherche, ou vous devrez également fournir le répertoire en tant qu’argument à findname__.

Une autre façon de faire consiste à utiliser ls -laR | egrep ^d.

Et la commande locateest également utile: locate string

3
belacqua