Wie man Verzeichnisse in Linux auflistet: Ein vollständiger Leitfaden für Anfänger und Systemadministratoren
Die Arbeit in Linux ähnelt oft dem Navigieren in einer riesigen Bibliothek. Anstelle von Regalen haben Sie Verzeichnisse (Ordner), und anstelle von Büchern haben Sie Dateien. Egal ob Sie ein erfahrener Systemadministrator, ein Entwickler oder ein neugieriger Anfänger sind, der gerade anfängt – die Beherrschung der Grundlagen der Dateisystemnavigation ist unverzichtbar. Eine der wichtigsten grundlegenden Fähigkeiten ist zu wissen, wie man Verzeichnisse effizient und genau auflistet.
Dieser Leitfaden führt Sie durch jede praktische Methode zum Auflisten von Verzeichnissen in Linux, erklärt die Stärken und Grenzen jedes Ansatzes und zeigt Ihnen genau, wann Sie welches Tool verwenden sollten – einschließlich in Scripting- und Produktionsserver-Umgebungen.
Warum das Auflisten von Verzeichnissen wichtig ist
Auf einem persönlichen Computer könnten Sie gelegentlich Ihren Ordner "Dokumente" oder "Downloads" über eine grafische Benutzeroberfläche durchsuchen. Auf einem Linux-Server sind Verzeichnisse jedoch das Herzstück fast jeder administrativen Aufgabe, die Sie ausführen werden:
- Systemadministration: Schnell überprüfen, was sich in
/etc/,/var/log/oder/usr/local/bin/befindet. - Web-Hosting: Projektordner unter
/var/www/oder/home/lokalisieren und verwalten. - Softwareentwicklung: Versionskontroll- und Umgebungsverzeichnisse wie
.git/oder.venv/identifizieren. - Sicherheitsaudit: Genau bestätigen, was auf dem System installiert, konfiguriert und ausgeführt wird.
- Automatisierung und Scripting: Zuverlässig Verzeichnisse für die Verwendung in Shell-Skripten und Cron-Jobs aufzählen.
Wenn Sie Verzeichnisse nicht effizient auflisten können, werden Sie sich immer desorientiert fühlen — besonders in einer Remote-VPS Hosting-Umgebung, in der Sie nicht auf einen grafischen Dateimanager zurückgreifen können.
Methode 1: Der ls Befehl — Schnell und einfach
Der ls Befehl ist das Standard-Tool zum Anzeigen des Inhalts eines Verzeichnisses. Es ist der erste Befehl, den die meisten Linux-Benutzer lernen, und das aus gutem Grund: Er ist schnell, benutzerfreundlich und auf jedem Unix-ähnlichen System verfügbar.
Grundlegende Verwendung
lsDies listet alle nicht versteckten Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis auf.
Nur Verzeichnisse auflisten
ls -d */Hier ist, was jeder Teil macht:
-d— Teiltlsmit, nicht in Unterverzeichnisse abzusteigen, sondern die Verzeichniseinträge selbst aufzulisten.*/— Ein Shell-Glob-Muster, das alle Verzeichnisse (und symbolische Links zu Verzeichnissen) im aktuellen Ordner abgleicht.
Verzeichnisse mit detaillierten Informationen auflisten
ls -ld */Das Hinzufügen von -l gibt Ihnen ein langes Listenformat, das Folgendes enthält:
- Dateiberechtigungen
- Anzahl der Hard Links
- Besitzer und Gruppe
- Dateigröße
- Zeitstempel der letzten Änderung
Beispielausgabe:
drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/Einschränkung: Versteckte Verzeichnisse sind ausgeschlossen
Das */ Glob stimmt nicht mit versteckten Verzeichnissen überein — solchen, deren Namen mit einem Punkt beginnen (.), wie .git/, .ssh/ oder .config/. Dies ist ein wichtiger Vorbehalt, besonders in sicherheitsempfindlichen Umgebungen.
Wann ls -d */ verwendet werden sollte: Schnelle, interaktive Überprüfungen, bei denen Sie nur sichtbare Verzeichnisse benötigen und keine Scripting-Zuverlässigkeit erforderlich ist.
Methode 2: Der find Befehl — Leistungsstark und zuverlässig
Der find Befehl ist die Wahl des Profis zum Aufzählen von Verzeichnissen. Im Gegensatz zu ls ist er für programmatische Verwendung konzipiert, unterstützt rekursives Durchlaufen, enthält standardmäßig versteckte Verzeichnisse und verhält sich konsistent über verschiedene Linux-Distributionen und Locales hinweg.
Alle Verzeichnisse rekursiv auflisten
find . -type d.— Beginnt im aktuellen Verzeichnis.-type d— Passt nur auf Verzeichniseinträge (nicht auf Dateien, Symlinks oder andere Typen).
Dies listet rekursiv jedes Verzeichnis auf jeder Tiefenebene unter Ihrem aktuellen Standort auf.
Nur Verzeichnisse der obersten Ebene auflisten (portable Methode)
find . -mindepth 1 -maxdepth 1 -type d-mindepth 1— Schließt das aktuelle Verzeichnis selbst (.) aus den Ergebnissen aus.-maxdepth 1— Verhindert Rekursion über die unmittelbaren Kinder hinaus.
Dies ist die portabelste und zuverlässigste Methode, um nur die direkten Unterverzeichnisse des aktuellen Ordners aufzulisten, und sie funktioniert identisch auf GNU/Linux, macOS und BSD-Systemen.
Alternative für GNU/Linux-Systeme
Auf den meisten modernen Linux-Distributionen — einschließlich derer, die auf Dedicated Servers laufen — können Sie auch verwenden:
find . -maxdepth 1 -type dBeachten Sie, dass dies . selbst in die Ausgabe einbezieht. Verwenden Sie -mindepth 1 zusammen mit -maxdepth 1, um es sauber auszuschließen.
Versteckte Verzeichnisse einbeziehen
Da find nicht auf Shell-Globs angewiesen ist, bezieht es automatisch versteckte Verzeichnisse ein:
find . -mindepth 1 -maxdepth 1 -type dDies zeigt .git/, .ssh/, .config/ und alle anderen mit Punkt beginnenden Verzeichnisse neben sichtbaren an.
find in Skripten verwenden
find ist das richtige Werkzeug für Shell-Scripting, weil:
- Es Dateinamen mit Leerzeichen und Sonderzeichen sicher verarbeitet.
- Es nicht von Locale-Einstellungen oder Terminal-Farbkonfigurationen beeinflusst wird.
- Es konsistente, analysierbare Ausgabe erzeugt.
Beispiel: Über alle Verzeichnisse der obersten Ebene iterieren
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
echo "Processing: $dir"
doneWann find verwendet werden sollte: Jedes Mal, wenn Sie versteckte Verzeichnisse einbeziehen müssen, rekursive Ergebnisse benötigen oder zuverlässige Ausgabe für Scripting und Automatisierung benötigen.
Methode 3: Der tree Befehl — Visuelle Verzeichniskarten
Der tree Befehl rendert eine visuelle, hierarchische Karte Ihrer Verzeichnisstruktur. Er ist nicht standardmäßig auf allen Distributionen installiert, aber äußerst nützlich für Dokumentation, Onboarding und das Verständnis komplexer Projektlayouts.
tree installieren
Debian/Ubuntu:
sudo apt install treeCentOS/RHEL/AlmaLinux:
sudo yum install treeNur Verzeichnisse auflisten (keine Dateien)
tree -dTiefe begrenzen, um überwältigende Ausgabe zu vermeiden
tree -d -L 2-d— Nur Verzeichnisse anzeigen.-L 2— Die Anzeige auf 2 Ebenen Tiefe begrenzen.
Beispielausgabe:
.
├── backups
│ └── daily
├── html
│ ├── assets
│ └── uploads
└── logsVersteckte Verzeichnisse einbeziehen
tree -d -aWann tree verwendet werden sollte: Visualisierung von Projektstrukturen, Schreiben von Dokumentation oder Erkundung eines unbekannten Server-Layouts zum ersten Mal.
Method 4: Warum Sie ls -l | grep "^d" vermeiden sollten
Sie werden gelegentlich dieses Muster online vorgeschlagen sehen:
ls -l | grep "^d"Die Idee ist, die Langformat-Ausgabe von ls zu filtern, um nur Zeilen anzuzeigen, die mit d beginnen — was ein Verzeichnis anzeigt. Während dies clever erscheint, ist es grundlegend fragil und sollte in jedem ernsthaften Kontext vermieden werden:
| Problem | Erklärung |
|---|---|
| Locale-Empfindlichkeit | Einige Locales oder Terminal-Konfigurationen ändern das Ausgabeformat von ls -l, was das grep-Muster bricht. |
| Farbcodes | Wenn ls ANSI-Farbescapezeichen ausgibt, kann das ^d-Muster nicht übereinstimmen. |
| Versteckte Verzeichnisse | Nicht angezeigt, genau wie bei ls -d */. |
| Symbolische Links | Symlinks, die auf Verzeichnisse zeigen, werden als l angezeigt, nicht als d, daher werden sie stillschweigend ausgeschlossen. |
| Scripting-Unzuverlässigkeit | Das Parsen von ls-Ausgaben in Skripten wird in Best Practices für Shell-Scripting explizit abgeraten. |
Verwenden Sie stattdessen find. Es ist speziell für diese Aufgabe konzipiert und vermeidet alle oben genannten Probleme.
Schnellreferenz: Wahl der richtigen Methode
| Ziel | Bestes Kommando |
|---|---|
| Schnelle interaktive Überprüfung (nur sichtbare Verzeichnisse) | ls -d */ |
| Detaillierte Auflistung mit Berechtigungen | ls -ld */ |
| Verzeichnisse der obersten Ebene einschließlich versteckter | find . -mindepth 1 -maxdepth 1 -type d |
| Alle Verzeichnisse rekursiv | find . -type d |
| Visuelle Baumstruktur | tree -d |
| Verwendung in einem Shell-Skript | find . -mindepth 1 -maxdepth 1 -type d |
Best Practices für Production Server-Umgebungen
Bei der Arbeit auf einem Live-Server — ob es sich um ein Shared Web Hosting-Konto oder einen vollständig verwalteten VPS handelt — beachten Sie diese Prinzipien:
- Überprüfen Sie immer versteckte Verzeichnisse während Sicherheitsprüfungen. Verzeichnisse wie
.ssh/,.git/,.env/und.config/enthalten oft sensible Anmeldedaten, Schlüssel und Konfigurationsdateien. Verwenden Siefindmit-mindepth 1, um sicherzustellen, dass sie in Ihrer Ausgabe angezeigt werden.
- Verwenden Sie
findin allen Skripten, niemalsls. Das Parsen vonls-Ausgabe ist ein bekanntes Anti-Pattern in Shell-Scripting. Derfind-Befehl ist deterministisch, unabhängig von der Gebietsschema-Einstellung und behandelt Grenzfälle elegant.
- Kombinieren Sie
findmit-execfür Massenoperationen. Zum Beispiel, um Verzeichnisgrößen aufzulisten:
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;- Verwenden Sie
tree -d -L 2beim Onboarding. Wenn Sie sich zum ersten Mal per SSH auf einem unbekannten Server anmelden, gibt Ihnen ein schnellertree -d -L 2von/var/www/oder/home/einen sofortigen strukturellen Überblick.
- Beschränken Sie Berechtigungen sorgfältig. Zu wissen, welche Verzeichnisse vorhanden sind, ist nur ein Teil des Bildes. Überprüfen Sie regelmäßig Verzeichnisberechtigungen mit
ls -ld */, um falsch konfigurierte, weltweit beschreibbare Verzeichnisse zu erkennen.
Praktisches Beispiel: Audit eines Web-Server-Verzeichnisses
Angenommen, Sie haben gerade eine neue Anwendung auf einem Linux VPS bereitgestellt. Hier ist ein praktischer Workflow, der die in diesem Leitfaden behandelten Befehle kombiniert:
# Navigate to the web root
cd /var/www/
# Quick visual check of top-level directories
ls -ld */
# Full audit including hidden directories
find . -mindepth 1 -maxdepth 1 -type d
# Visual map of the project structure (2 levels deep)
tree -d -L 2
# Check disk usage per directory
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;Dieser Workflow dauert weniger als eine Minute und gibt Ihnen einen vollständigen Überblick über das Verzeichnislayout, die Berechtigungen und den Speicherverbrauch Ihres Web-Servers – wesentliches Wissen für jeden Administrator, der einen VPS mit cPanel oder einen benutzerdefinierten Linux-Stack verwaltet.
Fazit
Das Auflisten von Verzeichnissen ist eine der grundlegendsten Linux-Fähigkeiten, doch die Methode, die Sie wählen, ist wichtiger als die meisten Anfänger realisieren. Hier ist eine Zusammenfassung der wichtigsten Erkenntnisse:
ls -d */ist perfekt für schnelle, interaktive Überprüfungen — ignoriert aber versteckte Verzeichnisse und eignet sich nicht für Scripting.find . -mindepth 1 -maxdepth 1 -type dist der Gold-Standard für zuverlässiges, portables, script-sicheres Verzeichnisauflisten, das versteckte Einträge einschließt.tree -dist unschätzbar für die Visualisierung komplexer Strukturen und deren Kommunikation an andere.- Vermeiden Sie
ls -l | grep "^d"— es ist fragil, gebietsabhängig und hat keine Vorteile gegenüberfind.
Ob Sie Konfigurationen in einer Dedicated Servers-Umgebung verwalten, Webanwendungen bereitstellen oder einfach zum ersten Mal eine neue Linux-Maschine erkunden — die Beherrschung dieser Befehle spart Ihnen Zeit, verhindert teure Fehler und gibt Ihnen das Vertrauen, jedes Dateisystem mit Präzision zu navigieren.
Die Befehlszeile ist keine Barriere — sie ist eine Superkraft. Und sie beginnt damit, genau zu wissen, wo Sie sind und was Sie umgibt.
bei allen Hosting-Diensten