web-dev-qa-db-fra.com

ASCII Bibliothèque pour créer de "jolis" arbres de répertoires?

Existe-t-il un outil * nix ou une bibliothèque Perl/php qui vous permettra de créer facilement des visualisations d'arborescence de répertoires qui ressemblent à ce qui suit?

www
|-- private
|    |-- app 
|    |    |-- php
|    |    |    |-- classes
|    |    |    +-- scripts
|    |    |-- settings
|    |    +-- sql
|    +-- lib
|         +-- ZendFramework-HEAD
+-- public
    |-- css
    |-- images
    +-- scripts
70
Alan Storm

Que diriez-vous de cet exemple de nix Tree/Linux Tree :

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'  
99
bobbymcr

Cet oneliner est plutôt cool, je recommanderais d'utiliser l'utilitaire tree.

bash-3.2$ mkdir -p this/is/some/nested/example
bash-3.2$ mkdir -p this/is/another/super/nested/example
bash-3.2$ mkdir -p this/is/yet/another/example
bash-3.2$ mkdir -p this/is/some/nested/other/example
bash-3.2$ tree this
this
`-- is
    |-- another
    |   `-- super
    |       `-- nested
    |           `-- example
    |-- some
    |   `-- nested
    |       |-- example
    |       `-- other
    |           `-- example
    `-- yet
        `-- another
            `-- example

13 directories, 0 files
76
user1116793

Voir la classe RecursiveTreeIterator

Permet d'itérer sur un RecursiveIterator pour générer une arborescence graphique ASCII.

$treeIterator = new RecursiveTreeIterator(
    new RecursiveDirectoryIterator('/path/to/dir'),
    RecursiveTreeIterator::SELF_FIRST);

foreach($treeIterator as $val) echo $val, PHP_EOL;

La sortie sera quelque chose comme ça (avec c:\php sur ma machine):

|-c:\php5\cfg
|-c:\php5\data
| |-c:\php5\data\Base
| | \-c:\php5\data\Base\design
| |   |-c:\php5\data\Base\design\class_diagram.png
| |   \-c:\php5\data\Base\design\design.txt
| |-c:\php5\data\ConsoleTools
| | \-c:\php5\data\ConsoleTools\design
| |   |-c:\php5\data\ConsoleTools\design\class_diagram.png
| |   |-c:\php5\data\ConsoleTools\design\console.png
| |   |-c:\php5\data\ConsoleTools\design\console.xml
…
16
Gordon

Je me rends compte que cette question a été répondue il y a longtemps, mais je viens de trouver ce programme appelé tree qui est assez cool aussi.

16
Ibrahim

exa avec --tree fait un excellent travail:

exa --tree ~/tmp/public/

<dir>
├── aboutme
│  └── index.html
├── atrecurse
│  └── index.html
├── base.css
├── html5
│  ├── cat-and-mouse
│  └── frantic
│     ├── css
│     │  └── main.css
6
andy boot
1
zcopley

Jetez un oeil à App :: Asciio

0
draegtun