Wie man Verzeichnisse in Linux auflistet: Ein vollständiger Leitfaden für Anfänger und Systemadministratoren
Die Arbeit in Linux fühlt sich oft an wie die Navigation in einer riesigen Bibliothek. Statt Regale haben Sie Verzeichnisse (Ordner), und statt Bücher haben Sie Dateien. Egal ob Sie ein erfahrener Systemadministrator, ein Entwickler oder ein neugieriger Anfänger sind, die Beherrschung der Grundlagen der Dateisystem-Navigation 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 — auch beim Scripting und in 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:
- Systemverwaltung: 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. - Sicherheitsprüfung: 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 */So funktioniert jeder Teil:
-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 gleicht nicht versteckte Verzeichnisse ab — solche, 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 rekursive Durchquerung, enthält standardmäßig versteckte Verzeichnisse und verhält sich über verschiedene Linux-Distributionen und Locales hinweg konsistent.
Alle Verzeichnisse rekursiv auflisten
find . -type d.— Beginnen Sie im aktuellen Verzeichnis.-type d— Gleichen Sie nur Verzeichniseinträge ab (nicht Dateien, Symlinks oder andere Typen).
Dies listet rekursiv jedes Verzeichnis auf jeder Tiefenebene unter Ihrem aktuellen Standort auf.
Nur Verzeichnisse der obersten Ebene auflisten (tragbare 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 tragbarste 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 solcher, die auf Dedicated Servers laufen — können Sie auch Folgendes 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, enthält es automatisch versteckte Verzeichnisse:
find . -mindepth 1 -maxdepth 1 -type dDies zeigt .git/, .ssh/, .config/ und alle anderen Punkt-Präfix-Verzeichnisse neben sichtbaren an.
find in Skripten verwenden
find ist das richtige Tool 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 auf allen Distributionen standardmäßig installiert, aber äußerst nützlich für Dokumentation, Onboarding und zum 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— Begrenzen Sie die Anzeige auf 2 Ebenen tief.
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.
Methode 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 Langlistenausgabe von ls zu filtern, um nur Zeilen anzuzeigen, die mit d beginnen — was ein Verzeichnis anzeigt. Während dies clever wirkt, 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 unterbricht. |
| Farbcodes | Wenn ls ANSI-Farbescapesequenzen ausgibt, kann das ^d-Muster möglicherweise nicht abgleichen. |
| 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 Analysieren von ls-Ausgabe in Skripten wird in Best Practices für Shell-Scripting ausdrücklich nicht empfohlen. |
Verwenden Sie stattdessen find. Es ist speziell für diese Aufgabe konzipiert und vermeidet alle oben genannten Fallstricke.
Schnellreferenz: Wahl der richtigen Methode
| Ziel | Bester Befehl |
|---|---|
| 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 Produktionsserver-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 Sie ###PPT_NO
