Plusieurs scripts existent pour convertir une liste de noms de chemin sous forme d'arborescence :
- mon propre treeify.pl
- treeify.rs par Loïc Damien
- treeify.py par Hakril
Tous ces scripts fonctionnent avec tar -tf …
production; par exemple :
$ tar -tf foo.tar | treeify foo ├─bar │ ├─myfile.txt │ └─yourfile.txt └─baz └─qux └─hisfile.txt
Aussi :
$ bsdtar -tf foo.zip | treeify
$ find /dir -size +5 | treeify
$ git ls-files | treeify
$ pacman -Qql foopkg | treeify
$ unrar vb foo.rar | treeify
$ zipinfo -1 foo.zip | treeify
$ gsettings list-schemas | treeify -s. -f
$ qdbus | sed -n "s/^ //p" | treeify -s. -f
$ ldns-walk netbsd.org | awk '{print $1}' | treeify -s. -f -R
Ceci est juste un addendum à la réponse de user1686 bien que je n'aie pas assez de réputation pour commenter. Bien que ses scripts fassent certainement bien le travail, ils doivent être téléchargés pendant que tree
peut réellement le faire nativement :
$ tar tf foo.tar | tree --fromfile .
.
└── foo
├── bar
│ ├── myfile.txt
│ └── yourfile.txt
└── baz
└── qux
└── hisfile.txt
4 directories, 3 files
Notez que contrairement à la plupart des outils tree
utilise un point .
et non un tiret -
pour lire l'entrée de stdin :
INPUT OPTIONS
--fromfile
Reads a directory listing from a file rather than the file-system.
Paths provided on the command line are files to read from rather than directories to search.
The dot (.) directory indicates that tree should read paths from standard input.
Cela permet d'utiliser les fonctions d'arborescence typiques comme les caractères génériques bien que les tailles ne puissent évidemment pas être affichées et l'argument de niveau (-L
) apparemment ne fonctionne pas non plus...