tree - Verzeichnisbaum-Visualisierung
Tool-Lektion | 25 Minuten
Um Projekt-Strukturen zu verstehen, musst du normalerweise:
Lernziele
- Verstehen warum dieses Tool wichtig ist
- Die wichtigsten Einsatzgebiete kennen
- Installation und grundlegende Nutzung beherrschen
- Production-ready Patterns anwenden
- Real-World Use Cases umsetzen
tree - Verzeichnisbaum-Visualisierung
🚀 Claude Code Relevanz: tree ist das perfekte Werkzeug, um Claude Code den Kontext deiner Projektstruktur zu geben - ein einzelner Befehl liefert den kompletten Ueberblick, den Claude fuer praezise Code-Aenderungen braucht.
Berechtigung - Warum tree?
Das Problem mit `ls` und `cd`
Um Projekt-Strukturen zu verstehen, musst du normalerweise:
- ❌ Mehrfach
cdin Unterordner - ❌ Immer wieder
lsausführen - ❌ Mental Track halten, wo du bist
- ❌ ASCII-Art manuell zeichnen für Dokumentation
- ❌ Lange Zeit für Exploration
Die Lösung: tree
tree ist ein klassisches Unix-Tool (seit 1996), das Verzeichnisse als Baum visualisiert:
- ✅ Hierarchische Darstellung auf einen Blick
- ✅ Tiefe konfigurierbar (-L flag)
- ✅ Filterung (nur Directories, nur Files, nur Pattern)
- ✅ Export (HTML, JSON, XML)
- ✅ Statistiken (File-Count, Size)
- ✅ Schnell selbst bei großen Projekten
Ergebnis: Du verstehst Projekt-Strukturen in Sekunden statt Minuten.
💡 Tipp: Erstelle einen Aliastfuertree -L 2 -I 'node_modules|dist|.git'- du wirst ihn dutzende Male am Tag nutzen.
Zwecke - Wofür du tree einsetzt
tree ist vielseitig einsetzbar - von schneller Exploration bis zur professionellen Dokumentation. Hier die fuenf wichtigsten Anwendungsfaelle.
. **Projekt-Struktur dokumentieren**
Jedes gute Projekt braucht eine Dokumentation seiner Verzeichnisstruktur, damit neue Team-Mitglieder schnell verstehen wo sich was befindet. tree exportiert die komplette Ordnerhierarchie als formatierten Text, den du direkt in README-Dateien, Wiki-Seiten oder Onboarding-Dokumente einfuegen kannst. Mit -L 2 begrenzt du die Tiefe auf zwei Ebenen, was fuer die meisten Dokumentationszwecke der ideale Detailgrad ist. Stell dir vor, ein neuer Entwickler joined dein Team und soll sich im Projekt zurechtfinden - eine tree-Ausgabe in der README gibt ihm sofort Orientierung. Das Ergebnis ist eine sauber formatierte ASCII-Baumstruktur mit Verbindungslinien, die du einfach in eine Textdatei umleiten kannst.
tree -L 2 > PROJECT_STRUCTURE.txt
. **Neues Projekt verstehen**
Wenn du ein neues Repository klonst, ist das erste was du tun solltest die Verzeichnisstruktur zu verstehen. Statt dich muehsam mit cd und ls durch jeden Ordner zu klicken, zeigt dir tree die gesamte Hierarchie auf einen Blick. Das -I Flag ignoriert dabei Ordner wie node_modules und .git, die tausende Dateien enthalten und den Output unbrauchbar machen wuerden. Stell dir vor, du sollst in einem Open-Source-Projekt einen Bug fixen und musst erst verstehen wo der relevante Code liegt - tree zeigt dir die Struktur in Sekunden. Mit drei Ebenen Tiefe (-L 3) siehst du genug Detail, ohne von der Informationsmenge ueberwaeltigt zu werden.
tree -L 3 -I 'node_modules|.git'
. **Code-Review Vorbereitung**
Bevor du einen Pull Request reviewst, willst du verstehen welche Verzeichnisse von den Aenderungen betroffen sind und wie die Codebase strukturiert ist. Mit tree -d zeigst du nur Verzeichnisse an (ohne einzelne Dateien), was dir eine uebergeordnete Strukturansicht gibt. Das ist nuetzlich um Team-Mitgliedern die Architektur zu erklaeren oder um bei einem PR-Review zu verstehen, ob die Aenderungen in den richtigen Ordnern liegen. Stell dir vor, jemand hat einen PR eingereicht der Dateien in 5 verschiedenen Verzeichnissen aendert - mit tree -d -L 2 siehst du sofort ob die Struktur Sinn ergibt. Das Ergebnis ist ein kompakter Ordnerbaum ohne den Clutter einzelner Dateien.
tree -d -L 2 # Nur Directories
. **Dokumentation generieren**
tree kann die Verzeichnisstruktur nicht nur als Text ausgeben, sondern auch als HTML-Datei exportieren. Diese HTML-Datei laesst sich im Browser oeffnen und bietet eine klickbare, interaktive Baumansicht deines Projekts. Das ist besonders nuetzlich fuer nicht-technische Stakeholder wie Projektmanager, die keinen Terminal-Zugang haben aber die Projektstruktur verstehen muessen. Stell dir vor, dein PM fragt "Welche Ordner hat unser Projekt?" - statt einen Screenshot zu machen, generierst du eine HTML-Datei und schickst sie per E-Mail. Das Ergebnis ist ein professionell aussehendes Dokument, das auch auf GitHub Pages gehostet werden kann.
tree -H . -o structure.html
. **File-Count und Statistiken**
Wenn du wissen willst wie gross ein Projekt tatsaechlich ist - in Anzahl Dateien und Speicherplatz - liefert tree mit dem --du Flag die Disk-Usage fuer jeden Ordner. Das -h Flag zeigt die Groessen in menschenlesbarem Format (KB, MB, GB) an. Am Ende der Ausgabe siehst du die Gesamtstatistik mit der Anzahl der Verzeichnisse und Dateien. Stell dir vor, du willst pruefen ob dein Docker-Build unnoetig gross ist - tree zeigt dir sofort welche Ordner den meisten Platz einnehmen. Das Ergebnis sind Groessenangaben neben jedem Ordner und eine Zusammenfassung am Ende der Ausgabe.
tree --du -h # Mit Disk-Usage
Verwendung - Wie du tree einsetzt
Von der Installation ueber Grundbefehle bis zu Export-Formaten - hier lernst du tree von Grund auf.
Installation
tree ist auf allen Plattformen als Standardpaket verfuegbar und in weniger als einer Minute installiert.
macOS (Homebrew):
Auf macOS installierst du tree am schnellsten ueber Homebrew. Die Installation dauert nur wenige Sekunden, und tree ist danach sofort im Terminal verfuegbar. macOS hat zwar ein eingebautes find-Kommando, aber tree bietet die deutlich lesbarere Baumdarstellung. Pruefe mit tree --version ob die Installation erfolgreich war. Bei Problemen stelle sicher, dass Homebrew aktuell ist (brew update).
brew install tree
Ubuntu/Debian: Auf Debian-basierten Systemen ist tree als Standardpaket verfuegbar. Es gehoert zu den am haeufigsten genutzten Unix-Tools und ist in nahezu allen Repositories enthalten. Im Gegensatz zu eza oder bat gibt es hier keine Namenskonflikte oder Sonderbehandlungen. Nach der Installation kannst du tree sofort nutzen. Der Befehl funktioniert identisch auf allen Linux-Distributionen.
sudo apt install tree
Arch Linux:
Arch Linux bietet tree im Extra-Repository an. Dank Rolling Release bekommst du immer die aktuellste Version. Die Installation ist unkompliziert und dauert nur wenige Sekunden. tree hat keine zusaetzlichen Abhaengigkeiten und ist sofort einsatzbereit. Pruefe mit tree --version ob alles korrekt installiert wurde.
sudo pacman -S tree
Windows (Chocolatey):
Auf Windows installierst du tree ueber Chocolatey. Beachte, dass Windows ein eigenes eingebautes tree-Kommando hat, das deutlich weniger Optionen bietet. Die Chocolatey-Version gibt dir die volle Funktionalitaet des Unix-tree-Befehls mit allen Flags und Optionen. Nach der Installation funktioniert tree in PowerShell und im Windows Terminal. Fuer die beste Erfahrung nutze das Windows Terminal.
choco install tree
⚠️ Warnung: Ohne-I 'node_modules'kanntreein JavaScript-Projekten Tausende Dateien anzeigen und dein Terminal ueberfluten. Nutze IMMER Ignore-Patterns bei grossen Projekten.
Quick Start (30 Sekunden)
Mit diesen vier Grundbefehlen deckst du die meisten Anwendungsfaelle ab.
Basis-Usage:
Diese vier Grundbefehle decken die haeufigsten Anwendungsfaelle ab. Ein einfaches tree ohne Flags zeigt den kompletten Verzeichnisbaum - das kann bei grossen Projekten allerdings zu viel Output sein. Deshalb ist -L 2 der wichtigste Flag, der die Tiefe auf zwei Ebenen begrenzt. Mit -d siehst du nur die Ordnerstruktur ohne einzelne Dateien, und -h fuegt Dateigroessen in menschenlesbarem Format hinzu. Stell dir vor, du wechselst in ein neues Projektverzeichnis und willst schnell die Struktur verstehen - tree -L 2 gibt dir den perfekten Ueberblick. Achte darauf, bei JavaScript-Projekten immer -I node_modules hinzuzufuegen, sonst wartest du ewig auf die Ausgabe.
# Kompletter Tree (aller Files)
tree
# Nur 2 Ebenen tief
tree -L 2
# Nur Directories
tree -d
# Mit File-Sizes
tree -h
Wichtigste Flags: Diese Flags steuern, wie tief und welche Dateien tree anzeigt:
# -L <level> Maximale Tiefe
# -d Nur Directories
# -f Full Path anzeigen
# -h Human-readable Sizes
# -I <pattern> Ignore Pattern (z.B. 'node_modules')
# -P <pattern> Nur Pattern zeigen (z.B. '*.js')
# -a Inkl. hidden files
# --du Disk Usage
# --dirsfirst Directories zuerst
Advanced Usage
Fuer groessere Projekte sind Ignore-Patterns und Export-Funktionen unverzichtbar.
1. Ignore-Patterns (wichtig!): Ohne Ignore-Patterns kann tree bei grossen Projekten den Output mit tausenden Dateien ueberfluten:
# Single Pattern
tree -I 'node_modules'
# Multiple Patterns
tree -I 'node_modules|dist|build|.git'
# Alle Hidden Files ignorieren
tree -I '.*'
# Nur Source-Code (ignore Tests)
tree -I 'test|__tests__|*.test.js'
2. Nur bestimmte File-Types:
Mit dem -P Flag filterst du den Output auf bestimmte Dateitypen - ideal um nur den relevanten Code zu sehen:
# Nur JavaScript-Files
tree -P '*.js'
# Nur TypeScript + TSX
tree -P '*.ts|*.tsx'
# Nur Config-Files
tree -P '*.json|*.yml|*.yaml'
# Nur Markdown
tree -P '*.md'
3. Statistiken:
tree bietet verschiedene Statistik-Optionen, um mehr ueber dein Projekt zu erfahren. Mit --dirsfirst werden Ordner vor Dateien angezeigt, was die Lesbarkeit verbessert. Das --du Flag berechnet die Disk-Usage fuer jeden Ordner, -s -h zeigt die Groesse jeder einzelnen Datei in menschenlesbarem Format, und -p zeigt die Unix-Berechtigungen an. Stell dir vor, du willst pruefen ob alle Skript-Dateien ausfuehrbare Berechtigungen haben - tree -p zeigt dir das sofort. Diese Statistiken sind auch nuetzlich fuer die Dokumentation und fuer Cleanup-Aufgaben.
# File + Directory Count
tree --dirsfirst
# Mit Disk-Usage
tree --du -h
# File-Sizes anzeigen
tree -s -h
# Permissions anzeigen
tree -p
4. Output-Formate: tree kann die Verzeichnisstruktur in verschiedene Formate exportieren - HTML fuer Stakeholder, JSON fuer Weiterverarbeitung:
# HTML Export
tree -H . -o structure.html
# JSON Export (perfekt fuer Weiterverarbeitung mit jq)
tree -J > structure.json
# XML Export
tree -X > structure.xml
# Mit CSS (für HTML)
tree -H . -T "My Project" -o structure.html
5. Sorting:
Die Standard-Sortierung von tree ist alphabetisch, aber du kannst die Reihenfolge anpassen. Mit --dirsfirst erscheinen Ordner vor Dateien, was die visuelle Struktur verbessert. Fuer eine Sortierung nach Groesse kombinierst du tree mit sort -h, und mit -D zeigt tree Timestamps an, die du mit --timefmt formatieren kannst. Stell dir vor, du willst die zuletzt geaenderten Dateien in einem Projektverzeichnis finden - tree -D zeigt dir die Modification-Times direkt neben jedem Eintrag. Beachte dass die native Sortierung von tree eingeschraenkter ist als bei eza - fuer komplexere Sortierungen nutze eza oder pipe den Output durch sort.
# Alphabetisch (default)
tree
# Directories zuerst
tree --dirsfirst
# Nach Size (größte zuerst)
tree -h --du | sort -h
# Nach Modification Time
tree -D --timefmt '%Y-%m-%d %H:%M'
6. Tiefere Control:
Fuer spezielle Anforderungen bietet tree fortgeschrittene Optionen zur Kontrolle der Ausgabe. Mit -f zeigst du den vollstaendigen Pfad jeder Datei an, was nuetzlich ist wenn du die Pfade in Skripten weiterverwenden willst. Das -i Flag entfernt die Baumlinien und gibt eine einfache Textliste aus, die sich besser fuer maschinelle Verarbeitung eignet. Mit -D siehst du das letzte Aenderungsdatum jeder Datei, und durch Filtern mit grep kannst du nur bestimmte Eintraege anzeigen. Stell dir vor, du willst eine Liste aller Dateien (ohne Ordner) mit ihrem vollen Pfad - tree -f | grep -v '/