L i n u x    B e f e h l    tree

  1. Erläuterung der Syntax

    SYNTAX: tree [OPTION]... [Verzeichnis]...

    ⇒ Beispiel: tree zeigt die Baumstruktur des Arbeitsverzeichnisses (working directory).

    ⇒ Beispiel: tree SW_CLI SW_Scripts zeigt die Baumstruktur von zwei Unterverzeichnissen des Arbeitsverzeichnisses SW_CLI, SW_Scripts.

    Option (Hinweis) Bedeutung
    -a (all)

    tree zeigt normalerweise keine versteckten Dateien oder Verzeichnissen an. Über Option -a (all) werden auch die letzteren berücksichtigt.

    -d (directories only)

    Nur die nackte Baumstruktur der Verzeichnisse wird offenbart - keine Dateien.

    -f (full name)

    Standardmäßig zeigt tree innerhalb der Verzeichnisstruktur keinen Dateipfad an.
    Im Kombination mit einer nachträglichen Filterung des Outputs - z.B. via grep) wird die Baumstrukur teilweise unleserlich. In solchem Fall ist es vorteilhaft, den vollständigen Dateinamen - inkl. Pfad - anzeigen zu lassen.

    -L (max level)

    Die Option steuert wie tief die Darstellung der Baustruktur hinreichen soll.

    -P (pattern)

    Zeigt nur Namen, welche dem wildcard Muster entsprechen. Die Syntax der Mustererkennung ist, wie folgt, erklärt.

    • * entspricht keine oder ein oder mehrere unbestimmte Zeichen
    • ? entspricht ein einzelnes unbestimmtes Zeichen
    • [...] entspricht ein einzelnes Zeichen aus der Menge in der geklammerten Liste. z.B. [a, b, k] kennzeichnet Zeichen a, b, oder k.
    • Wird zwischen zwei Zeichen in den Klammern ein Minus (-) geschrieben, handelt es sich um die Angabe eines Spektrum z.B. [a, x-z] entspricht eines der folgenden Zeichen a, x, y, z.
    • [^...] kehrt die in [...] bestimmte Menge um z.B. [^a,x-z] entspricht ein einzelnes Zeichen, außer den Zeichen a, x, y, z.
    • | ermöglicht die Addition unterschiedlicher Muster innerhalb der Klammer z.B. [a-c| A-C] entspricht ein Zeichen aus der Menge {a,b,c, A, B, C}.

    -I (ignore pattern)

    Wie bei Option P wird die Ausgabe via Mustererkennung gefiltert. Jedoch anstatt der "positiven" Filterung findet nun eine negative Filterung statt: Nur Namen, die dem Muster nicht entsprechen, werden behalten.

    -o (output redirection)

    Anstatt des Standardoutput (Eingabe/Ausgabe Zeile) leitet tree die Ausgabe in die in Option -o genannte Datei um.

    Tab. Auswahl von Optionen für tree

  2. Nützliche Beispiele:
    1. tree -a -f -L 2 | grep -F -i .txt

      zeigt die Baumstruktur des Arbeitsverzeichnisses bis in die Ebene 1-L=-1 (Unterverzeichnis). Nur Dateien, deren Namen dem Muster .txt entspricht, werden angezeigt. Es werden die vollständigen Namen (inkl. Pfad) ausgegeben.

      Anmerkungen:

      • Die Numerierung der Ebenen beginnt mit 1 (= das Arbeitsverzeichnis) (Der Eintrag 0 ist unzulässig).
        Ebene 2 bezieht sich auf die Unterverzeichnisse des Arbeitsverzeichnisses. Je höher die L-Zahl, desto tiefer das Spektrum der berücksichtigten Verzeichnisse - entsprechend dem Formel 1-L.
      • Über die Verkettung mit dem Befehl grep wird die Ausgabe gefiltert. In diesem Beispiel werden nur Namen aufgelistet, welche Zeichenkette ".txt" buchstabengetreu enthalten.

      Beispiel von Ausgabe (auf meinem System, wenn das Arbeitsverzeichnis das Userverzeichnis ist). Demnach ist Datei rsync_DateiListe.txt die einzig sichtbare im Homeverzeichnis.

      Linux cmd tree -a -f -L

    2. tree -L 2 -d -o tree_d_L_output.txt

      speichert in Datei tree_d_L_output.txt, die Baumstruktur (nur das Skelett) des Arbeitsverzeichnisses bis auf die Unterebene 1-L=-1 (inkl. Unterverzeichnissen).

      Auf meinem Linux-System ist die von tree geführten Umwandlung der grafischen (nicht-ASCII) Zeichen fehlerhaft: Möglicherweise verwendet tree eine antiquierte Zeichentabelle (meine Text-Editoren verwenden UTF-8). Damit die Baumstruktur richtig dargestellt wird, verwende man anstatt der -o Option lieber das Linux Umleitungs-zeichen: Man tippe also den Befehl tree -L 2 -d > tree_d_L_output.txt.

      Ein Beispiel von Ausgabe des modifizierten Befehls auf meinem System, wenn das Arbeitsverzeichnis ~/Dokumente ist.
      Linux cmd tree -d -L 2 output.txt.

      Anmerkung:
      Wolle man die Textdatei in eine PDF-Datei umwandeln, scheitert die Befehlsfolge:

      • enscript input.txt -output output.ps (Umwandlung der Textdatei input.txt in eine Postscriptdatei output.ps),
      • ps2pdf input.ps output.pdf (Umwandlung der Postscriptdatei input.ps in eine PDF-datei output.pdf).

      Der Fehler rührt daher, dass Programm enscript UTF-8 nicht unterstützt.

  3. Infos und Links:
    Englisch Deutsch