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
Que diriez-vous de cet exemple de nix Tree/Linux Tree :
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
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
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
…
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.
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
Cool Python pour le faire: http://code.activestate.com/recipes/217212/
Jetez un oeil à App :: Asciio