GNU/Linux >> Tutoriels Linux >  >> Linux

Comment lister uniquement les répertoires sous Linux

La commande ls sous Linux est utilisée pour lister le contenu de n'importe quel répertoire.

Par défaut, il liste tout le contenu, que ce soit un fichier ou un répertoire ou un lien ou un tube nommé.

Mais que se passe-t-il si vous souhaitez lister uniquement les répertoires ? Comment fais-tu ça ?

Comme tout sous Linux, il existe plusieurs façons d'accomplir la même tâche. Lister uniquement les répertoires n'est pas différent :

  • ls -d */
  • ls -l | grep '^d'
  • trouver . -maxdepth 1 -type d
  • écho */
  • arbre -d -L 1

Ne vous inquiétez pas. Je vais vous expliquer les choses en détail. Voici le contenu du répertoire que je vais utiliser dans les exemples ici :

Utiliser la commande ls pour lister uniquement les répertoires

Il est toujours bon de le faire avec la commande familière ls car c'est la commande que vous utilisez pour afficher le contenu d'un répertoire.

Pour lister uniquement les sous-répertoires, utilisez le -d option avec la commande ls comme ceci :

ls -d */

Voici le résultat affiché :

[[email protected] Documents]$ ls -d */
another_dir/  my_dir/

Pourquoi */ ? Parce que sans cela, ls -d renverra uniquement le nom du répertoire. Le -d l'option liste les répertoires et non son contenu (ce qui inclut les fichiers, les répertoires, etc.).

Le */ est un motif. Avec * , vous listez tout le contenu (y compris le contenu des sous-répertoires) et le / limite le modèle aux répertoires.

Cette image illustre assez bien la différence.

Vous pouvez le combiner avec l'option de liste longue -l et la plupart des autres options :

[[email protected] Documents]$ ls -ld */
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 another_dir/
drwxrwxr-x. 1 abhishek abhishek 44 Nov  7 18:22 my_dir/

Si vous ne voulez pas de barre oblique (/) à la fin des noms de répertoire, vous pouvez utiliser la commande cut pour la supprimer :

[[email protected] Documents]$ ls -ld */ | cut -f1 -d'/'
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 another_dir
drwxrwxr-x. 1 abhishek abhishek 44 Nov  7 18:22 my_dir

Répertorier uniquement les sous-répertoires d'un répertoire spécifique

La commande ci-dessus fonctionne dans le répertoire courant. Que faire si vous n'êtes pas dans le même répertoire ?

Dans cette situation, vous pouvez utiliser */ à la fin du chemin du répertoire avec ls -d :

ls -d Path/To/Dir/*/

Voici un exemple où je quitte le répertoire Documents, puis je liste uniquement les répertoires à l'intérieur du répertoire Documents :

[[email protected] ~]$ ls -ld Documents/*/
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 Documents/another_dir/
drwxrwxr-x. 1 abhishek abhishek 44 Nov  7 18:22 Documents/my_dir/

Avez-vous remarqué qu'il ne répertorie pas le répertoire caché ? C'est un défaut de cette méthode. Vous pouvez utiliser ls -d .*/ pour afficher les répertoires cachés, mais il n'affiche que les répertoires cachés.

Utiliser la combinaison de la commande ls et grep

Vous pouvez toujours compter sur la bonne vieille commande grep pour filtrer la sortie pour un contenu spécifique.

Si vous listez longuement le contenu, vous pouvez identifier les répertoires car commencez par d .

Vous pouvez utiliser grep pour filtrer le contenu commençant par d :

ls -l | grep '^d'

Mais cela vous donne beaucoup plus de champs que les noms de répertoire :

[[email protected] Documents]$ ls -l | grep '^d'
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 another_dir
drwxrwxr-x. 1 abhishek abhishek 44 Nov  7 18:22 my_dir

Utiliser la commande find pour lister uniquement les répertoires

Voici comment utiliser la commande find pour ne lister que les sous-répertoires :

find directory_path -maxdepth 1 -type d

J'espère que vous connaissez la commande find. Je vais quand même l'expliquer.

Avec type d , vous demandez à la commande find de rechercher uniquement les répertoires.

Avec maxdepth 1 vous demandez à la commande find de conserver la recherche au niveau actuel uniquement (et de ne pas aller dans les sous-répertoires).

[[email protected] Documents]$ find . -maxdepth 1 -type d
.
./my_dir
./another_dir
./.my_hidden_dir

Comme vous pouvez le voir dans la sortie ci-dessus, il affiche également le répertoire caché.

Utiliser la commande tree pour lister uniquement les répertoires

Si votre objectif est de ne lister que les répertoires, vous pouvez également utiliser la commande tree.

Par défaut, la commande tree vous donne la structure complète des répertoires. Vous pouvez le modifier pour afficher uniquement les répertoires et uniquement au niveau actuel.

tree -dai -L 1
  • d - rechercher uniquement les répertoires
  • a - recherchez également les fichiers et répertoires cachés
  • i - supprimer l'arborescence de l'affichage
  • L 1 - ne va pas dans les sous-répertoires

Voici le résultat :

[email protected] Documents]$ tree -dai -L 1
.
another_dir
my_dir
.my_hidden_dir

3 directories

Utilisation de la commande echo pour lister les répertoires

Le candidat improbable ? Vous serez surpris d'apprendre que la commande echo sous Linux peut également être utilisée pour afficher le contenu d'un répertoire. Essayez d'utiliser echo * et voyez par vous-même.

Semblable à la commande ls, vous pouvez également utiliser le */ pattern pour lister uniquement les répertoires du répertoire de travail courant.

echo */

Voici la sortie qui est identique à ce que vous avez obtenu avec le ls -d commande :

Il pourrait y avoir plus de façons de lister uniquement les répertoires, pas les fichiers. En fait, les méthodes décrites ici peuvent avoir des si et des mais en fonction de ce que vous recherchez.

Si votre objectif est simplement d'afficher les répertoires, la plupart des commandes dont j'ai parlé fonctionneraient. Si vous voulez quelque chose de plus spécifique, comme obtenir uniquement le nom des répertoires avec une barre oblique, etc., vous devrez effectuer vous-même un formatage.

J'espère que vous trouverez cette astuce Linux utile. Les questions et suggestions sont toujours les bienvenues.


Linux
  1. Comment utiliser la commande Su sous Linux

  2. Commande Linux ls - Lister les fichiers

  3. Commande Linux :Comment "trouver" uniquement des fichiers texte ?

  4. Comment lister récursivement les répertoires en C sous Linux ?

  5. Comment puis-je répertorier tous les utilisateurs verrouillés sous Linux ?

Commande SS sous Linux

Comment lister les fichiers de manière récursive sous Linux

Comment lister les systèmes de fichiers sous Linux avec lfs

Comment lister les disques sous Linux

Comment répertorier les utilisateurs et les groupes sous Linux

Comment lister tous les utilisateurs d'un groupe sous Linux