Outils pour utilisateurs

Outils du site


linux:lister-repertoire

Linux : Lister les répertoires uniquement

Introduction

Une petite astuce qui permet de lister uniquement les répertoires présents dans le répertoire courant.

Il y a plusieurs façons de faire ça ; par exemple faire un “ls -l”, filtrer uniquement les lignes type directory et récupérer le dossier avec un awk/cut… Je trouve ça bien compliqué pour une action simple (et pour les répertoires avec un espace dans le nom, c'est encore plus compliqué).

Un exemple d'utilisation.

Solution 1 : Native - Commande find

La commande find permet de faire beaucoup de chose, notamment de lister les répertoires, à condition de connaître les bons paramètres :

find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n"

Petites explications :

  • -maxdepth 1 : va limiter la rechercher au répertoire courant, sans entrer dans les sous-répertoires
  • -mindepth 1 : permet de ne pas afficher le dossier . qui apparait comme une ligne vide avec %P
  • -type d : uniquement les répertoires
  • %P : affiche le nom des répertoires sans le ./
  • grep -v “^$” :
Note : Merci à tsyr2ko pour l'astuce

Solution 2 : script PERL

Créer le fichier lsdir.pl dans le répertoire de votre choix. J'ai choisi /opt/lsdir.pl.

Le code à y mettre :

#!/usr/bin/perl
$|++;
foreach (<*>){
    print "$_\n" if -d;
} exit 0;

On vérifie que ça marche en se plaçant dans un dossier qui contient des sous répertoires, et on lance la commande :

perl /opt/lsdir.pl

Il vous sort normalement une belle liste !

Création d'un alias

Retrouver les bons paramètres de find ou lancer la commande avec PERL, pourquoi pas, mais ce n'est pas forcément le plus pratique. Et comme nous sommes des fainéants, on va se créer un petit alias.

Ouvrez le fichier /etc/bashrc (ou équivalent selon votre OS) et ajoutez la ligne suivante :

# Find
alias lsdir='find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n"'
 
# OU PERL
alias lsdir='perl /opt/lsdir.pl'

Et voilà, maintenant la commande lsdir fonctionne partout, et pour tous les utilisateurs.

linux/lister-repertoire.txt · Dernière modification: 2013/05/14 12:29 par Arthur Hoaro