Comment lister les répertoires dans Linux : Un guide complet pour les débutants et les administrateurs système
Travailler sous Linux ressemble souvent à naviguer dans une vaste bibliothèque. Au lieu d’étagères, vous avez des répertoires (dossiers), et au lieu de livres, vous avez des fichiers. Que vous soyez un administrateur système chevronné, un développeur ou un curieux débutant qui commence tout juste, maîtriser les principes fondamentaux de la navigation du système de fichiers est indispensable. L’une des compétences fondamentales les plus critiques est de savoir comment lister les répertoires efficacement et avec précision.
Ce guide vous présente toutes les méthodes pratiques pour lister les répertoires sous Linux, explique les forces et les limitations de chaque approche, et vous montre exactement quand utiliser quel outil — y compris dans les scripts et les environnements de serveurs de production.
Pourquoi lister les répertoires est important
Sur un ordinateur personnel, vous pourriez occasionnellement parcourir votre dossier « Documents » ou « Téléchargements » via une interface graphique. Sur un serveur Linux, cependant, les répertoires sont au cœur de presque chaque tâche administrative que vous effectuerez :
- Administration système : Auditez rapidement ce qui se trouve dans
/etc/,/var/log/ou/usr/local/bin/. - Hébergement web : Localisez et gérez les dossiers de projets sous
/var/www/ou/home/. - Développement logiciel : Identifiez les répertoires de contrôle de version et d’environnement tels que
.git/ou.venv/. - Audit de sécurité : Confirmez exactement ce qui est installé, configuré et exécuté sur le système.
- Automatisation et scripts : Énumérez les répertoires de manière fiable pour une utilisation dans les scripts shell et les tâches cron.
Si vous ne pouvez pas lister les répertoires efficacement, vous vous sentirez toujours désorienté — surtout dans un environnement VPS Hosting distant où il n’y a pas de gestionnaire de fichiers graphique sur lequel vous appuyer.
Méthode 1 : La commande ls — Rapide et simple
La commande ls est l’outil par défaut pour afficher le contenu d’un répertoire. C’est la première commande que la plupart des utilisateurs Linux apprennent, et pour une bonne raison : elle est rapide, lisible par l’homme et disponible sur tous les systèmes de type Unix.
Utilisation basique
lsCela liste tous les fichiers et répertoires non cachés du répertoire de travail actuel.
Lister uniquement les répertoires
ls -d */Voici ce que chaque partie fait :
-d— Indique àlsde ne pas descendre dans les sous-répertoires, mais de lister les entrées du répertoire lui-même.*/— Un motif glob shell qui correspond à tous les répertoires (et aux liens symboliques vers les répertoires) du dossier actuel.
Lister les répertoires avec des informations détaillées
ls -ld */L’ajout de -l vous donne un format de liste longue qui inclut :
- Permissions de fichier
- Nombre de liens physiques
- Propriétaire et groupe
- Taille du fichier
- Horodatage de la dernière modification
Exemple de sortie :
drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/Limitation : les répertoires cachés sont exclus
Le glob */ ne correspond pas aux répertoires cachés — ceux dont les noms commencent par un point (.), tels que .git/, .ssh/ ou .config/. C’est une mise en garde importante, surtout dans les environnements sensibles à la sécurité.
Quand utiliser ls -d */ : Vérifications rapides et interactives où vous n’avez besoin que de répertoires visibles et ne nécessitez pas de fiabilité de script.
Méthode 2 : La commande find — Puissante et fiable
La commande find est le choix du professionnel pour énumérer les répertoires. Contrairement à ls, elle est conçue pour une utilisation programmatique, supporte la traversée récursive, inclut les répertoires cachés par défaut et se comporte de manière cohérente sur les différentes distributions Linux et les paramètres régionaux.
Lister tous les répertoires récursivement
find . -type d.— Commencez à partir du répertoire actuel.-type d— Correspond uniquement aux entrées de répertoire (pas aux fichiers, liens symboliques ou autres types).
Cela listera récursivement tous les répertoires à chaque niveau de profondeur sous votre emplacement actuel.
Lister uniquement les répertoires de niveau supérieur (méthode portable)
find . -mindepth 1 -maxdepth 1 -type d-mindepth 1— Exclut le répertoire actuel lui-même (.) des résultats.-maxdepth 1— Empêche la récursion au-delà des enfants immédiats.
C’est le moyen le plus portable et fiable de lister uniquement les sous-répertoires directs du dossier actuel, et cela fonctionne de manière identique sur les systèmes GNU/Linux, macOS et BSD.
Alternative pour les systèmes GNU/Linux
Sur la plupart des distributions Linux modernes — y compris celles exécutées sur Serveurs Dédiés — vous pouvez également utiliser :
find . -maxdepth 1 -type dNotez que cela inclura . lui-même dans la sortie. Utilisez -mindepth 1 aux côtés de -maxdepth 1 pour l’exclure proprement.
Inclure les répertoires cachés
Parce que find ne s’appuie pas sur les globs shell, il inclut automatiquement les répertoires cachés :
find . -mindepth 1 -maxdepth 1 -type dCela affichera .git/, .ssh/, .config/ et tout autre répertoire préfixé par un point aux côtés des répertoires visibles.
Utiliser find dans les scripts
find est l’outil correct pour les scripts shell car :
- Il gère les noms de fichiers avec des espaces et des caractères spéciaux en toute sécurité.
- Il n’est pas affecté par les paramètres régionaux ou les configurations de couleur du terminal.
- Il produit une sortie cohérente et analysable.
Exemple : Boucle sur tous les répertoires de niveau supérieur
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
echo "Processing: $dir"
doneQuand utiliser find : Chaque fois que vous avez besoin de répertoires cachés inclus, de résultats récursifs ou d’une sortie fiable pour les scripts et l’automatisation.
Méthode 3 : La commande tree — Cartes visuelles des répertoires
La commande tree affiche une carte hiérarchique visuelle de votre structure de répertoire. Elle n’est pas installée par défaut sur toutes les distributions, mais elle est extrêmement utile pour la documentation, l’intégration et la compréhension des mises en page de projets complexes.
Installer tree
Debian/Ubuntu :
sudo apt install treeCentOS/RHEL/AlmaLinux :
sudo yum install treeLister uniquement les répertoires (pas de fichiers)
tree -dLimiter la profondeur pour éviter une sortie accablante
tree -d -L 2-d— Affiche uniquement les répertoires.-L 2— Limite l’affichage à 2 niveaux de profondeur.
Exemple de sortie :
.
├── backups
│ └── daily
├── html
│ ├── assets
│ └── uploads
└── logsInclure les répertoires cachés
tree -d -aQuand utiliser tree : Visualiser les structures de projets, rédiger de la documentation ou explorer la disposition d’un serveur inconnu pour la première fois.
Méthode 4 : Pourquoi vous devriez éviter ls -l | grep "^d"
Vous rencontrerez occasionnellement ce motif suggéré en ligne :
ls -l | grep "^d"L’idée est de filtrer la sortie de liste longue de ls pour afficher uniquement les lignes commençant par d — ce qui indique un répertoire. Bien que cela semble astucieux, c’est fondamentalement fragile et devrait être évité dans tout contexte sérieux :
| Problème | Explication |
|---|---|
| Sensibilité aux paramètres régionaux | Certains paramètres régionaux ou configurations de terminal modifient le format de sortie de ls -l, cassant le motif grep. |
| Codes de couleur | Si ls génère des codes d’échappement ANSI de couleur, le motif ^d peut ne pas correspondre. |
| Répertoires cachés | Non affichés, tout comme avec ls -d */. |
| Liens symboliques | Les liens symboliques pointant vers des répertoires s’affichent comme l, pas d, ils sont donc silencieusement exclus. |
| Fiabilité des scripts | L’analyse de la sortie de ls dans les scripts est explicitement déconseillée dans les meilleures pratiques de script shell. |
Utilisez find à la place. Elle est conçue à cet effet et évite tous les pièges ci-dessus.
Référence rapide : Choisir la bonne méthode
| Objectif | Meilleure commande |
|---|---|
| Vérification interactive rapide (répertoires visibles uniquement) | ls -d */ |
| Liste détaillée avec permissions | ls -ld */ |
| Répertoires de niveau supérieur incluant les répertoires cachés | find . -mindepth 1 -maxdepth 1 -type d |
| Tous les répertoires récursivement | find . -type d |
| Structure d’arbre visuelle | tree -d |
| Utilisation dans un script shell | find . -mindepth 1 -maxdepth 1 -type d |
Meilleures pratiques pour les environnements de serveurs de production
Lorsque vous travaillez sur un serveur en direct — qu’il s’agisse d’un compte Hébergement Web Partagé ou d’un VPS entièrement géré — gardez ces principes à l’esprit :
- Vérifiez toujours les répertoires cachés lors des audits de sécurité. Les répertoires comme
.ssh/,.git/,.env/et.config/contiennent souvent des identifiants sensibles, des clés et des fichiers de configuration. Utilisezfindavec-mindepth 1pour vous assurer qu’ils apparaissent dans votre sortie.
- Utilisez
finddans tous les scripts, jamaisls. L’analyse de la sortie delsest un anti-motif bien connu dans les scripts shell. La commandefindest déterministe, indépendante des paramètres régionaux et gère les cas limites avec élégance.
- Combinez
findavec-execpour les opérations en masse. Par exemple, pour lister les tailles de répertoire :
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;- Utilisez ###
