Existe-t-il un moyen de lister uniquement les dossiers d'un répertoire en utilisant des commandes bash ? ( comme le ls
liste tous les fichiers et dossiers )
Réponses
Trop de publicités?La réponse de Daniel est correcte. Voici cependant quelques ajouts utiles.
Pour éviter de lister les dossiers cachés (comme .git
), essayez ceci :
find . -mindepth 1 -maxdepth 1 -type d \( ! -iname ".*" \)
Et pour remplacer la barre oblique redoutée au début de find
dans certains environnements, utilisez ceci :
find . -mindepth 1 -maxdepth 1 -type d \( ! -iname ".*" \) | sed 's|^\./||g'
Vous n'êtes pas "censé" analyser la sortie de ls, c'est ce qui est dit. Le raisonnement derrière cela est que la sortie est destinée à être lisible par l'homme et que cela peut la rendre inutilement compliquée à analyser, si je me souviens bien.
si vous ne voulez pas ls ou find, vous pouvez essayer de filtrer "*" avec "[ -d ]".
C'est ce que j'ai fait, pour une raison quelconque, ls et find ne fonctionnaient pas (les noms de fichiers avec des espaces et des parenthèses, je suppose, ou quelque chose d'autre que j'ai négligé), puis j'ai fait quelque chose du type
for f in * ; do [ -d "$f" ] && echo $f is indeed a folder ; done
- Réponses précédentes
- Plus de réponses