web-dev-qa-db-fra.com

Trouvez tous les annuaires contenant un certain caractère et imprimez-les

J'ai besoin de trouver tous les annuaires contenant un certain caractère à leur nom et imprimez-les.

Donc, si j'ai les répertoires:

abc cde fgh

Et je recherche "c" je devrais avoir:

abc 
cde
10
Devid Demetz

Les commandes suivantes effectuent la requête requise:

find -name "*c*" -type d
  • démarre avec le répertoire actuel (pas besoin de spécifier le répertoire en cas de répertoire actuel)
  • -name "*c*" - avec nom contient la lettre c
  • -type d - quels sont un répertoire

Vous pouvez exécuter la commande sur d'autres répertoires (/full/path/to/dir) en utilisant:

find /full/path/to/dir -name "*c*" -type d

Plus d'infos Nixcraft Trouver la commande

18
Yaron

Si globstar est activé que vous pouvez utiliser ceci

for d in **/*c*/; do echo $d; done

La première ** correspondra à tous les chemins de sous-répertoire arbitraires. Puis *c*/ avec des dossiers de match avec le caractère C

Si ce n'est pas activé, vous pouvez l'activer avec shopt -s globstar

  • globstar

    • Si défini, le motif ** Utilisé dans un contexte d'expansion du nom de fichier correspondra à tous les fichiers et à zéro ou à plus de répertoires et de sous-répertoires. Si le motif est suivi d'un /, seuls les annuaires et les sous-répertoires correspondent.
1
phuclv