web-dev-qa-db-fra.com

Commande Linux pour imprimer la structure de répertoires sous la forme d'une arborescence

Existe-t-il une commande linux que je peux appeler à partir d'un script Bash qui imprimera la structure de répertoires sous la forme d'un arbre, par exemple,

folder1
   a.txt
   b.txt
folder2
   folder3
460
user243655

Est-ce ce que vous cherchez arbre ? Cela devrait être dans la plupart des distributions (peut-être en option).

~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
|   `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
|   |-- dev_snmp6
|   |-- netfilter
|   |-- rpc
|   |   |-- auth.rpcsec.context
|   |   |-- auth.rpcsec.init
|   |   |-- auth.unix.gid
|   |   |-- auth.unix.ip
|   |   |-- nfs4.idtoname
|   |   |-- nfs4.nametoid
|   |   |-- nfsd.export
|   |   `-- nfsd.fh
|   `-- stat
|-- root -> /
`-- task
    `-- 15589
        |-- attr
        |-- cwd -> /proc
        |-- fd
        | `-- 3 -> /proc/15589/task/15589/fd
        |-- fdinfo
        `-- root -> /

27 directories

échantillon tiré de la page Web du responsable.

Vous pouvez ajouter l'option -L ## est remplacé par un nombre, pour spécifier la profondeur de récursivité maximale.

Supprimez -d pour afficher également les fichiers.

717
crafty

Vous pouvez utiliser celui-ci:

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

Il affichera une représentation graphique des sous-répertoires actuels sans fichiers en quelques secondes , par exemple. dans /var/cache/:

   .
   |-Apache2
   |---mod_cache_disk
   |-apparmor
   |-apt
   |---archives
   |-----partial
   |-apt-xapian-index
   |---index.1
   |-dbconfig-common
   |---backups
   |-debconf

Source

301
Soufiane Hassou

Pour ajouter la solution de Hassou à votre .bashrc, essayez:

alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/   /'"'"' -e '"'"'s/-/|/'"'"
16
RussellStewart