Tree : Afficher l’arborescence des fichiers et dossiers

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

Bash
sudo apt install tree

Installation sous Arch Linux

Bash
sudo pacman -S tree

Installation sous Red Hat, Rocky Linux, Fedora, CentOS, …

Bash
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:

Bash
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 courteDescriptionExemple
-aAffiche tous les fichiers et dossierstree -a
-dN’affiche que les dossierstree -d
-fAffiche le chemin complet pour chaque élémenttree -f
-LNombre maximum de niveaux de dossiers à parcourirtree -L 2
-PN’affiche que les fichiers correspondant à une expressiontree -P *.txt
-IIgnore les fichiers correspondant à une expressiontree -I *.txt
-oEnregistre le résultat dans un fichier au lieu de l’affichertree -o list.txt
--pruneExclut les dossiers vide de l’affichagetree --prune
--dirsfirstAffiche toujours les dossiers en premier dans la listetree --dirsfirst
-XAffiche le résultat au format XMLtree -X
-JAffiche le résultat au format JSONtree -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:

cat tree.json
[{"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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.