Est-il possible de répertorier uniquement les dossiers d'un répertoire à l'aide de commandes bash? (comme la ls
commande liste tous les fichiers et dossiers)
linux
command-line
ls
SpiXel
la source
la source
ls -d -- */
etls -d */
?--
est traditionnellement utilisé pour marquer la fin des options, de sorte que si un fichier est nommé,-l
ls ne l'interprète pas comme une option de formatage de liste longue.La réponse de Stephen Martin a donné un avertissement et a également répertorié le dossier actuel. Je suggère donc
(Ceci est sous Linux; je ne pouvais pas trouver -maxdepth et -mindepth dans la page de manuel POSIX pour find)
la source
ls -d -- */
option, tout commefind
les directions cachées. Ce qui peut parfois être utile, mais aussi parfois causer des problèmes. J'espère que ce commentaire pourrait aider les autres. +1Ne listera que les dossiers. Et comme Teddy l'a fait remarquer, vous aurez besoin de -maxdepth pour l'empêcher de revenir dans les sous-répertoires.
la source
-maxdepth 1
aussi.La réponse de Daniel est correcte. Voici quelques ajouts utiles, cependant.
Pour éviter de lister les dossiers cachés (comme
.git
), essayez ceci:Et pour remplacer la barre oblique redoutée au début de la
find
sortie dans certains environnements, utilisez ceci:la source
Vous n'êtes "pas censé" analyser la sortie de ls, ou c'est ce qu'on dit. Le raisonnement derrière est que le résultat est conçu pour être lisible par l'homme et que cela peut compliquer inutilement l'analyse, si je me souviens bien.
si vous ne voulez ni ls ni find, vous pouvez essayer de filtrer "*" avec "[-d]".
C’est ce que j’ai fait, pour une raison ou une autre et que ma recherche ne fonctionnait pas (noms de fichiers avec des espaces et des crochets, je suppose, ou quelque chose que j’ignorais), puis j’ai fait quelque chose dans le sens de
la source
Juste pour souligner une chose qui m'a dérouté ici, en ce qui concerne la sélection de modèles globaux; dites que vous avez ceci:
Donc, disons que vous voulez sélectionner uniquement les
mydir*
répertoires. Notez que si vous omettez la barre oblique finale,ls -d
les fichiers seront également listés:... cependant, avec une barre oblique finale, seuls les répertoires sont listés:
la source
printf "%s\n" */
listera tous les répertoires dans le $ PWD.echo */
fonctionnera également, mais sur une longue ligne, plus difficile lorsque les noms ont des espaces.la source
Vous pouvez aussi utiliser:
Ou:
la source