tree

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Starten von Programmen im Terminal

Inhaltsverzeichnis
  1. Installation
  2. Syntax
  3. Optionen
  4. Beispiele
  5. Links

Wiki/Icons/terminal.png tree ist ein Programm, mit dem man sich eine Verzeichnishierarchie rekursiv als Baumstruktur anzeigen lassen kann. Das Programm verdeutlicht die Verzweigung der Verzeichnisse und unterscheidet sich damit stark von ls, mit dem lediglich der Inhalt von Verzeichnissen aufgelistet wird.

Installation

Um das Programm verwenden zu können, muss es zunächst installiert werden [1], da es nicht Teil der Standardinstallation ist.

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install tree 

sudo aptitude install tree 

Syntax

Da tree ein Kommandozeilenwerkzeug ist, muss es im Terminal[2] gestartet werden[3]:

tree [OPTIONEN] [VERZEICHNIS] 

Optionen

Im Folgendem eine unvollständige Auflistung von häufig genutzten Parametern. Weitere Parameter können in der Manpage des Programms eingesehen werden.

Optionen
Parameter Bedeutung
-a Zeigt auch versteckte Verzeichnisse an
-d Zeigt nur Verzeichnisse an
-l Folgt symbolischen Links
-f Zeigt für jedes Objekt den vollen Pfad an
-x Bleibt auf dem aktuellen Dateisystem
-L WERT Hiermit kann die Tiefe des Baums festgelegt werden
-P MUSTER Zeigt nur Objekte an, die dem Muster entsprechen
-I MUSTER Zeigt Objekte, die dem Muster entsprechen, nicht an
--prune Lässt leere Verzeichnisse aus
--filelimit WERT Zeigt Verzeichnisse mit mehr als WERT Objekten nicht an
-o DATEINAME Schreibt die Ausgabe in eine Datei
Dateioptionen
Option Bedeutung
-p Listet auch Dateityp und -rechte auf
-u Listet auch den Benutzer jeder Datei auf
-g Listet auch die Gruppe jeder Datei auf
-s Gibt auch die jeweiligen Dateigrößen aus
-h Zeigt Dateigrößen in KB, MB, GB, usw. anstatt von Bytes an
--si Nutzt SI-Präfixe
--du Zeigt Größe der Datei sowie Unterordner an (wie du)
Sortierungsoptionen
Option Bedeutung
-r Umgekehrte alphabetische Reihenfolge
-t Nach dem Zeitpunkt der letzten Bearbeitung sortieren
-U Unsortiert (so wie im Verzeichnis tatsächlich sortiert)
--dirsfirst Listet zunächst Verzeichnisse auf
Optionen der Darstellung
Option Bedeutung
-i Keine Linien anzeigen
-n Keine Farben anzeigen
-C Immer Farben anzeigen (nutzt die Variable LS_COLORS)
Ausgabeoptionen
Option Bedeutung
-X Als XML-Datei ausgeben
-H Ausgabe in HTML-Datei schreiben (mit Hyperlinks)
-T TITEL Spezifiziert den Titel und die Überschrift für die HTML-Ausgabe
--nolinks Schaltet Hyperlinks in der HTML-Ausgabe ab

Beispiele

Allgemeiner Aufruf

Beim Aufruf ohne Parameter zeigt tree die Struktur des aktuellen Verzeichnisses ohne weitere Informationen:

tree 

Die daraus folgende Ausgabe:

.
├── änderungen.png
├── Anteil_png_jpg.ods
├── artikelliste
├── bilder.csv
├── bilder.gnuplt
├── geheim
│   └── streng.geheim
├── nutzer.png
├── ohne.csv
├── ohne.csv~
├── png_jpg.png
├── report.csv
├── Wikiaktion_Graphen.ods
└── wikiaktion.inyoka

1 directory, 13 files

Verzeichnisse bestimmter Ebenen

Der folgende Befehl zeigt die (gekürzte) Baumstruktur von /usr. Dabei werden nur Verzeichnisse angezeigt und max. zwei Ebenen tief:

tree -dL 2 /usr 

Die daraus folgende Ausgabe:

/usr
├── bin
│   └── X11 -> .
├── games
├── include
│   ├── arpa
│   ├── asm-generic
│   ├── c++
│   ├── dbus-1.0
│   ├── drm
│   ├── gnucash
│   ├── gstreamer-0.10
│   ├── i386-linux-gnu
│   ├── linux
│   ├── mm
│   ├── mtd
│   ├── nautilus-sendto
│   ├── net
│   ├── netash
│   ├── netatalk
│   ├── netax25
│   ├── neteconet
│   ├── netinet
│   ├── netipx
│   ├── netiucv
│   ├── netpacket
│   ├── netrom
│   ├── netrose
│   ├── nfs
│   ├── protocols
│   ├── python2.7
│   ├── python3.2mu
│   ├── rdma
│   ├── rpc
│   ├── rpcsvc
│   ├── scsi
│   ├── sound
│   ├── video
│   ├── X11
│   ├── xchat
│   ├── xen
│   ├── xfce4
│   └── xorg
├── lib
│   ├── accountsservice
│   ├── adobe-flashplugin
│   ├── apg
│   ├── apr-util-1
│   ├── apt
│   ├── aqbanking
│   ├── aspell
│   ├── atlas-base
│   ├── at-spi2-core
│   ├── avahi
│   ├── binfmt-support
│   ├── blueman
│   ├── canto
│   ├── catdoc
│   ├── cli
│   ├── compat-ld
│   ├── cone
│   ├── ConsoleKit
│   ├── control-center-1
│   ├── coreutils
│   ├── cups
│   ├── cups-pk-helper
│   ├── dbus-1.0
│   ├── dconf
…
│   ├── webkitgtk-1.0-0
│   ├── webkitgtk-3.0-0
│   ├── weechat
│   ├── X11
│   ├── xchat
│   ├── xfce4
│   ├── xfce4-dict
│   ├── xfce4-verve-plugin
│   ├── xorg
│   ├── xscreensaver
│   ├── xulrunner
│   ├── xulrunner-addons
│   ├── zeitgeist
│   └── zsh
├── local
│   ├── bin
│   ├── etc
│   ├── games
│   ├── include
│   ├── lib
│   ├── man -> share/man
│   ├── sbin
│   ├── share
│   └── src
├── sbin
├── share
│   ├── a2ps
│   ├── abiword-2.9
│   ├── accounts
│   ├── aclocal
│   ├── acpi-support
│   ├── adduser
│   ├── adium
│   ├── alacarte
│   ├── alsa
│   ├── alsa-base
│   ├── app-install
│   ├── application-registry
│   ├── applications
…
│   ├── software-center
│   ├── software-properties
│   ├── sounds
│   ├── speech-dispatcher
│   ├── speedcrunch
│   ├── ssl-cert
│   ├── state
│   ├── synaptic
│   ├── system-config-printer
│   ├── system-tools-backends-2.0
│   ├── sysv-rc
│   ├── tabset
│   ├── tcltk
│   ├── telepathy
│   ├── Terminal
│   ├── terminator
│   ├── terminfo
│   ├── tesseract-ocr
│   ├── tex-common
│   ├── texinfo
│   ├── texlive
│   ├── texlive-bin
│   ├── texmf
│   ├── themes
│   ├── thumbnailers
│   ├── Thunar
│   ├── transmission
│   ├── tudu
│   ├── ubuntu-drivers-common
│   ├── ubuntu-release-upgrader
│   ├── ufw
│   ├── unattended-upgrades
│   ├── unity-greeter
│   ├── update-manager
│   ├── update-notifier
│   ├── usb-creator
│   ├── usb_modeswitch
│   ├── vim
│   ├── vlc
│   ├── vrms
│   ├── vte
│   ├── webkitgtk-1.0
│   ├── webkitgtk-3.0
│   ├── wpgen
│   ├── X11
│   ├── xfce4
│   ├── xfce4-notes-plugin
│   ├── xfig
│   ├── xfwm4
│   ├── xgreeters
│   ├── xml
│   ├── xml-core
│   ├── xscreensaver
│   ├── xserver-xorg
│   ├── xsessions
│   ├── xubuntu
│   ├── xubuntu-docs
│   ├── xul-ext
│   ├── yelp
│   ├── yelp-xsl
│   ├── zenity
│   ├── zenmap
│   ├── zim
│   ├── zoneinfo
│   └── zsh
└── src
    ├── linux-headers-3.5.0-22
    ├── linux-headers-3.5.0-22-generic
    ├── linux-headers-3.5.0-23
    ├── linux-headers-3.5.0-23-generic
    └── Ralink_2860sta-2.4.0.0

648 directories

HTML-Ausgabe

Das folgende Beispiel nutzt Hyperlinks. Da das Verzeichnis /var/log gewählt wurde, sollten die meisten Links auf jedem Linux-System funktionieren.

Die Ausgabe ist farbig (-C), zeigt Rechte, Eigentümer und Gruppe an (-pug) sowie die Größen der Dateien (-s) in gut lesbarer Form (-h). Das Verzeichnis, dessen Baum gebildet wird, ist /var/log. Die Ausgabe wird in eine HTML-Datei geschrieben. Dabei ist file:///var/log die Wurzel für alle Links, das heißt es wird immer auf die Dateien des aktuellen System gelinkt. Es kann aber auch der Link zu einem Webserver oder FTP-Server sein. Der Name der Ausgabe wird über -o festgelegt.

tree -Cpugsh /var/log -H "file:///var/log" -o ~/tree.html 

Ausgabedatei für den obigen Befehl: tree.html

Alternative mit ls

Auch ohne tree kann man mit ls, grep und sed eine ähnliche Ausgabe erzeugen. Allerdings ist der dazu benötigte Befehl deutlich komplexer:

ls -R ORDNER | grep ':$' | sed -e 's/:$//' -e 's/[^\/]*\//|  /g' -e 's/|  \([^|]\)/|–– \1/g' 

Quelle 🇩🇪