Tree : Afficher l’arborescence des fichiers et dossiers
La commande tree est un petit utilitaire en ligne de commande qui permet d’afficher l’arborescence des répertoires et fichiers de manière récursive.
Dans cet article nous verrons comment installer et utiliser la commande tree ainsi que les principales options qui nous permettrons d’en tirer le maximum d’infirmations selon os besoins.
Installation de la commande tree
Comme d’habitude la procédure d’installation dépend entièrement de la distribution sur laquelle nous travaillons, et donc du gestionnaire de package correspondant comme apt, dnf, pacman etc.
Installation sous Debian / Ubuntu et leurs dérivés
sudo apt install tree
Installation sous Arch Linux
sudo pacman -S tree
Installation sous Red Hat, Rocky Linux, Fedora, CentOS, …
sudo dnf install tree
Utilisation de la commande tree
Bien que très simple d’apparence, la commande tree est extrêmement riche en options. Voici sa syntaxe générale:
tree [options] [chemin de base]
Utilisation basique de la commande tree
Lorsque nous appelons la commande tree sans option et sans cible spécifique, l’utilitaire nous affichera l’arborescence depuis le chemin courant en affichant de manière récursive, les dossiers et sous-dossiers présents à l’exception des dossiers et fichiers masqués.
steve@just-sudo-it testtree $ tree
.
├── data
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
└── sources
├── projet01
│ ├── bin
│ └── src
│ └── exemple.py
└── projet02
├── bin
└── src
└── exemple.py
8 directories, 7 files
steve@just-sudo-it testtree $
Nous pouvons également inclure tous les éléments y compris les fichiers et dossiers cachés à l’aide de l’option -a
.
steve@just-sudo-it testtree $ tree -a
.
├── data
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
├── .fichier_caché
└── sources
├── projet01
│ ├── bin
│ └── src
│ ├── .config
│ └── exemple.py
└── projet02
├── bin
└── src
├── .config
└── exemple.py
8 directories, 10 files
steve@just-sudo-it testtree $
Comme nous pouvons le voir dans cet exemple, une série de fichiers cachés étaient bien présents mais non affichés si l’option -a
n’est pas spécifiée.
Les principales options de la commande tree
Voici une liste non exhaustive des principales options de la commande tree ainsi que de leur description.
Option courte | Description | Exemple |
---|---|---|
-a | Affiche tous les fichiers et dossiers | tree -a |
-d | N’affiche que les dossiers | tree -d |
-f | Affiche le chemin complet pour chaque élément | tree -f |
-L | Nombre maximum de niveaux de dossiers à parcourir | tree -L 2 |
-P | N’affiche que les fichiers correspondant à une expression | tree -P *.txt |
-I | Ignore les fichiers correspondant à une expression | tree -I *.txt |
-o | Enregistre le résultat dans un fichier au lieu de l’afficher | tree -o list.txt |
--prune | Exclut les dossiers vide de l’affichage | tree --prune |
--dirsfirst | Affiche toujours les dossiers en premier dans la liste | tree --dirsfirst |
-X | Affiche le résultat au format XML | tree -X |
-J | Affiche le résultat au format JSON | tree -J |
Les options peuvent bien évidemment être cumulées, comme c’est le cas pour la plupart des outils en ligne de commande sous Linux.
Exemples d’utilisations de la commande tree
Afficher toute l’arborescence depuis le répertoire courant
steve@just-sudo-it testtree $ tree -a
.
├── data
│ ├── .dossier_caché
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
├── .fichier_caché
└── sources
├── projet01
│ ├── bin
│ └── src
│ ├── .config
│ └── exemple.py
└── projet02
├── bin
└── src
├── .config
└── exemple.py
9 directories, 10 files
steve@just-sudo-it testtree $
Nous avons doc ici la totalité de l’arborescence, dossiers et fichiers masqués compris.
Afficher uniquement l’arborescence des dossiers (y compris ceux qui sont cachés)
steve@just-sudo-it testtree $ tree -ad
.
├── data
│ └── .dossier_caché
└── sources
├── projet01
│ ├── bin
│ └── src
└── projet02
├── bin
└── src
9 directories
steve@just-sudo-it testtree $
L’option -a
permet d’afficher les éléments cachés et l’option -d
permet d’exclure les fichiers et de ne garder que les dossiers.
Afficher l’arborescence sous un répertoire déterminé
steve@just-sudo-it testtree $ tree sources/projet01
sources/projet01
├── bin
└── src
└── exemple.py
2 directories, 1 file
steve@just-sudo-it testtree $
N’afficher que 2 niveaux de dossiers
Ici nous affichons l’arborescence des dossiers (uniquement les dossiers) sur maximum deux niveaux depuis le répertoire de base de l’utilisateur courant.
steve@just-sudo-it testtree $ tree -dL 2 ~
/home/steve
└── testtree
├── data
└── sources
3 directories
steve@just-sudo-it testtree $
Les sous-dossiers de sources et data ne sont pas affichés puisqu’ils sont au delà du deuxième niveau.
Afficher uniquement les fichiers correspondant à une expression
Pour m’exemple ici nous afficherons les fichiers qui contient les caractères fi dans leur nom.
Dans l’expression à fournir nous pouvons utiliser les caractères de substitutions suivants:
*
: 0 ou plusieurs caractères, n’importe le(s) quel(s)?
: 0 ou 1 caractère, n’importe lequel[...]
: n’importe lequel des caractères spécifiés entre les crochets.
steve@just-sudo-it testtree $ tree -aP *fi*
.
├── data
│ ├── .dossier_caché
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
├── .fichier_caché
└── sources
├── projet01
│ ├── bin
│ └── src
│ └── .config
└── projet02
├── bin
└── src
└── .config
9 directories, 8 files
steve@just-sudo-it testtree $
Autre exemple, nous pouvons par exemple lister les fichiers qui commencent par « fichier » dans leur nom, suivi de 0, 1 ou deux caractères, suivi d’un point et de n’importe quel extension.
steve@just-sudo-it testtree $ tree -aP fichier??.*
.
├── data
│ ├── .dossier_caché
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
└── sources
├── projet01
│ ├── bin
│ └── src
└── projet02
├── bin
└── src
9 directories, 5 files
steve@just-sudo-it testtree $
Notez que l’expression ne s’applique pas aux dossiers mais uniquement aux fichiers.
Afficher l’arborescence en excluant les dossiers vides mais en incluant les fichiers cachés
Il est a noter que l’option --prune
est incompatible avec l’option -a
.
steve@just-sudo-it testtree $ tree -a --prune
.
├── data
│ ├── fichier00.txt
│ ├── fichier01.txt
│ ├── fichier02.txt
│ ├── fichier03.txt
│ └── fichier04.txt
├── .fichier_caché
└── sources
├── projet01
│ └── src
│ ├── .config
│ └── exemple.py
└── projet02
└── src
├── .config
└── exemple.py
6 directories, 10 files
steve@just-sudo-it testtree $
Les dossiers comme sources/projet01/bin
étant vides, ils sont exclus de la liste.
Générer un fichier JSON de l’arborescence des dossiers
Ici nous allons générer l’arborescence des dossiers y compris ceux qui sont cachés (options -a
et -d
) en excluant les fichiers (option -d
) et enregistrer le résultat dans un fichier (option -o
) au format JSON (option -J
).
steve@just-sudo-it testtree $ tree -adJo tree.json
steve@just-sudo-it testtree $
Le fichier généré ressemble donc à ceci:
[{"type":"directory","name": ".","contents":[
{"type":"directory","name":"data","contents":[
{"type":"directory","name":".dossier_caché","contents":[
]}
]},
{"type":"directory","name":"sources","contents":[
{"type":"directory","name":"projet01","contents":[
{"type":"directory","name":"bin","contents":[
]},
{"type":"directory","name":"src","contents":[
]}
]},
{"type":"directory","name":"projet02","contents":[
{"type":"directory","name":"bin","contents":[
]},
{"type":"directory","name":"src","contents":[
]}
]}
]}
]},
{"type":"report","directories":9}
]
Les formats JSON et XML permettent de réutiliser des données dans de multiples applications.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.