Dired ist Emacs' eingebauter Datei-Manager und ein Universal-Werkzeug: jedes Verzeichnis wird zu einem editierbaren Buffer mit Datei-Liste, in dem du markieren, kopieren, verschieben, löschen, umbenennen und sogar Shell-Befehle auf der Selektion ausführen kannst. Wer Dired beherrscht, braucht selten einen externen Datei-Manager — und arbeitet remote über Tramp mit denselben Tasten wie lokal.
Dired öffnen
Wie fast alles in Emacs ist Dired auf mehreren Wegen erreichbar. Beide funktionieren überall, das Verhalten ist identisch:
C-x dOder als sichere Bank über den Befehlsnamen:
M-x dired RETBeide Wege öffnen denselben Prompt im Minibuffer: „Dired (directory): ..." und schlagen als Default das Verzeichnis der aktuellen Datei vor. Mit RET bestätigen — Emacs öffnet einen neuen Buffer (typischerweise nach dem Verzeichnispfad benannt) mit einer Auflistung im Stil von ls -l.
Drei nützliche Varianten desselben Befehls für unterschiedliche Window-Layouts:
| Aufruf | Wirkung |
|---|---|
| C-x d | Dired im aktuellen Window öffnen |
| C-x 4 d | Dired in einem anderen Window (gesplittetem Frame) öffnen |
| C-x 5 d | Dired in einem anderen Frame (neuem OS-Fenster) öffnen |
| C-x C-f + Pfad | Datei-Öffnen-Prompt mit Verzeichnispfad öffnet ebenfalls Dired |
Der letzte Punkt ist im Alltag oft die schnellste Route: wer ohnehin schon C-x C-f in den Fingern hat, gibt einfach einen Verzeichnispfad statt eines Dateinamens ein — Emacs erkennt das und schaltet automatisch in den Dired-Modus.
Dired akzeptiert beim Prompt auch Wildcards. Statt ~/projekte/ lässt sich z. B. ~/projekte/*.md öffnen — der Dired-Buffer zeigt dann nur die passenden Dateien. Für gefilterte Ansichten ohne dauerhafte Konfiguration ist das ein extrem nützlicher Mini-Trick.
Navigation im Dired-Buffer
Ein Dired-Buffer ist ein eigener Major-Mode. Das hat eine wichtige Konsequenz: Bewegungs- und Aktions-Befehle sind als einzelne Buchstaben belegt, weil im Dired-Buffer ohnehin nichts getippt wird. Kein C--Prefix, keine Sequenzen — eine Taste, eine Aktion.
| Taste | Befehl | Wirkung |
|---|---|---|
| n / p | dired-next-line / dired-previous-line | nächste / vorherige Datei |
| C-n / C-p | dieselbe Funktion | Alternative mit den Standard-Bewegungs-Tasten |
| RET oder f | dired-find-file | Datei / Unterverzeichnis im selben Window öffnen |
| o | dired-find-file-other-window | Datei in einem anderen Window öffnen |
| v | dired-view-file | Datei nur anschauen (read-only View-Mode) |
| ^ | dired-up-directory | eine Verzeichnis-Ebene nach oben |
| g | revert-buffer | Verzeichnis neu einlesen (nach Änderungen draußen) |
| s | dired-sort-toggle-or-edit | Sortierung zwischen Name und Datum umschalten |
| q | quit-window | Dired-Buffer schließen |
Zwei Beobachtungen, die im Alltag den Unterschied machen:
- g ist Pflicht, sobald sich draußen etwas geändert hat — Dired zeigt einen Schnappschuss, kein Live-Listing. Eine Datei, die ein externes Tool gerade angelegt hat, taucht erst nach
revert-bufferauf. - v statt RET ist die richtige Wahl, wenn du nur kurz hineinschauen willst. Der View-Mode öffnet read-only, scrollt mit SPC/DEL wie ein Pager und schließt mit q ohne die Datei in einem normalen Buffer zu hinterlassen.
Innerhalb von Dired funktionieren auch alle gewohnten Emacs-Befehle: C-s sucht den Dateinamen-Text, Bookmarks lassen sich setzen, Region markieren geht — Dired ist eben „nur" ein Buffer mit besonderer Tastenbelegung.
Markieren für Mass-Operations
Das eigentliche Power-Konzept von Dired sind Marker. Du versiehst Dateien mit einem Marker (vergleichbar mit Checkboxen), dann führst du einen Befehl aus, der auf alle markierten Dateien gleichzeitig wirkt. Dired kennt zwei Marker-Arten: den allgemeinen * (für beliebige Aktionen) und das spezielle D (Lösch-Flag).
| Taste | Befehl | Wirkung |
|---|---|---|
| m | dired-mark | aktuelle Datei mit * markieren |
| u | dired-unmark | Markierung der aktuellen Datei entfernen |
| U | dired-unmark-all-marks | alle Markierungen im Buffer entfernen |
| t | dired-toggle-marks | Markierungen invertieren (markierte ↔ unmarkierte) |
| * . | dired-mark-extension | alle Dateien mit bestimmter Endung markieren |
| * / | dired-mark-directories | alle Verzeichnisse markieren |
| * s | dired-mark-subdir-files | alle Dateien des aktuellen Verzeichnisses markieren |
| * % | dired-mark-files-regexp | Dateien per Regex markieren (Prompt nach Pattern) |
| d | dired-flag-file-deletion | Datei als zu löschen flaggen (Marker D) |
| x | dired-do-flagged-delete | alle D-geflaggten Dateien löschen (mit Rückfrage) |
Die wichtigste konzeptionelle Trennung: d + x ist der klassische Zwei-Schritt-Lösch-Workflow — erst flaggen, dann ausführen. Wer hingegen m (allgemeine Markierung) gefolgt von D (großes D!) nutzt, löscht die markierten Dateien sofort mit Rückfrage. Beide Wege führen ans Ziel; der zweite ist konsistenter, wenn man die markierten Dateien ohnehin noch für andere Operationen braucht.
Beispiel-Workflow „alle Markdown-Dateien eines Ordners archivieren":
* % ; Regex-Markierung starten
\.md$ ; alle Dateien, die auf .md enden
RET ; markiert alle Treffer mit *
R ; dired-do-rename → fragt nach Ziel-Verzeichnis
~/archiv/2026/ RET ; alle markierten dorthin verschiebenMass-Operations: kopieren, verschieben, umbenennen, löschen
Sobald Dateien markiert sind (mit *), wirken Dired-Aktionen auf die gesamte Selektion. Ohne Markierung wirken sie auf die Datei unter dem Cursor — die meisten Befehle sind so „smart": entweder Auswahl oder Default-Single.
| Taste | Befehl | Aktion auf markierte / aktuelle Dateien |
|---|---|---|
| C | dired-do-copy | kopieren (Prompt nach Ziel) |
| R | dired-do-rename | verschieben / umbenennen |
| D | dired-do-delete | sofort löschen (mit Rückfrage) |
| H | dired-do-hardlink | Hardlink anlegen |
| S | dired-do-symlink | Symlink anlegen |
| M | dired-do-chmod | Permissions ändern (Prompt z. B. +x, 644) |
| O | dired-do-chown | Eigentümer ändern |
| T | dired-do-touch | Timestamp setzen (Prompt nach Zeit) |
| Z | dired-do-compress | gzippen / entpacken (kontext-abhängig) |
| P | dired-do-print | Druckauftrag |
Wichtig zum Verhalten von C und R:
- Bei einer markierten (oder unter dem Cursor stehenden) Datei fragt Dired nach einem Datei-Namen als Ziel — du kannst also gleichzeitig umbenennen.
- Bei mehreren markierten Dateien fragt Dired nach einem Ziel-Verzeichnis. Die Dateinamen bleiben erhalten, nur die Verzeichnis-Position ändert sich.
Diese Unterscheidung passiert automatisch — kein Modus-Wechsel nötig.
dired-do-chmod ist besonders praktisch: man kann sowohl symbolische Notation (+x, g-w, o=) als auch oktale Werte (755, 644) eintippen. Auf eine ganze Selektion angewendet spart das oft den Umweg über die Shell:
* . ; nach Endung markieren
sh RET ; alle *.sh-Dateien
M ; dired-do-chmod
+x RET ; ausfuehrbar fuer alleDrei weitere Mass-Befehle, die selten gezeigt, aber im Alltag golden sind:
- A (
dired-do-find-regexp) — durchsucht alle markierten Dateien per Regex. Ergebnisse landen in einem*xref*-Buffer mit Sprung-Möglichkeit. - Q (
dired-do-find-regexp-and-replace) — interaktives Suchen-und-Ersetzen über die gesamte Selektion. - + (
dired-create-directory) — neuen Unterordner direkt aus Dired heraus anlegen, ohne Shell-Wechsel.
Shell-Befehle auf der Selektion
Dired wird endgültig zur Universal-Werkbank, sobald man die Shell-Bridge dazunimmt. Mit ! (dired-do-shell-command) lässt sich jeder beliebige Shell-Befehl auf die markierten Dateien anwenden. Zwei Platzhalter steuern, wie die Dateinamen in den Befehl eingesetzt werden:
| Platzhalter | Bedeutung |
|---|---|
? | pro Datei einmal ausführen, Dateiname an der Stelle einsetzen |
* | einmal ausführen, ALLE markierten als Argument-Liste einsetzen |
Wenn weder ? noch * im Befehl vorkommen, hängt Dired die Dateinamen automatisch ans Ende — eine sinnvolle Default-Heuristik, die für die meisten Aufrufe ausreicht.
! gzip ? ; jede Datei einzeln gzippen
! tar -czf archive.tar.gz * ; alle markierten in ein Archiv packen
! md5sum * ; Pruefsummen einmal fuer alle ausgeben
! convert ? png:?.png ; ImageMagick: pro Datei konvertieren
! mv ? ?.bak ; Backup-Endung pro DateiMit & (dired-do-async-shell-command) läuft das Ganze asynchron im Hintergrund — Emacs blockiert nicht, der Befehl meldet seine Fertigstellung in einem eigenen *Async Shell Command*-Buffer. Pflicht für alles, was länger als ein paar Sekunden läuft (Archive packen, Bilder konvertieren, größere Sync-Operationen).
Zwei Stolperfallen:
- Die Shell, die Dired verwendet, ist
shell-file-name(Default/bin/shbzw. die OS-Standard-Shell). Bash-spezifische Konstrukte wie Process-Substitution funktionieren nur, wenn diese Variable aufbash/zshzeigt. - Werden mehrere Dateien per
*übergeben, müssen Befehl und Argumente damit umgehen können.rm *funktioniert,vim *öffnet alle gleichzeitig —editor ?wäre hier sicherer.
wdired: Dateinamen als Text editieren
Das vermutlich unterschätzteste Feature von Emacs überhaupt. C-x C-q (wdired-change-to-wdired-mode) macht den Dired-Buffer editierbar — als wäre er eine normale Text-Datei. Du kannst Dateinamen direkt überschreiben, mit Suchen-und-Ersetzen umbenennen, Multiple Cursors einsetzen, Rectangle-Bearbeitung nutzen — alles, was Emacs an Text-Werkzeugen bietet, wirkt sich nach dem Bestätigen auf die echten Dateinamen auf dem Dateisystem aus.
| Taste | Befehl | Wirkung |
|---|---|---|
| C-x C-q | wdired-change-to-wdired-mode | in den editierbaren Modus wechseln |
| C-c C-c | wdired-finish-edit | Änderungen anwenden (Dateien umbenannt) |
| C-c C-k | wdired-abort-changes | Änderungen verwerfen, zurück zu Dired |
| C-c C-[ | wdired-abort-changes | identisch |
Klassischer Use-Case — 200 Bilder vom Smartphone umbenennen:
C-x d ~/fotos/urlaub/ RET ; Dired auf das Verzeichnis
C-x C-q ; wdired aktivieren
M-% ; query-replace
IMG_ RET urlaub- RET ; IMG_ → urlaub-, alle Treffer bestaetigen
C-c C-c ; uebernehmen → alle Dateien sind umbenanntWas wdired nicht kann: Dateien anlegen oder löschen, indem du Zeilen hinzufügst oder entfernst. Es bearbeitet ausschließlich Namen, optional auch Symlink-Ziele und Permissions (sofern wdired-allow-to-change-permissions aktiviert ist). Für neue oder zu löschende Dateien bleibt der normale Dired-Workflow.
Wer einmal mit wdired gearbeitet hat, schaut auf externe Bulk-Renamer mit deutlichem Skeptizismus zurück — die Kombination aus Emacs' Text-Werkzeugen und einem Live-Preview auf der Datei-Liste ist schwer zu schlagen.
dired-x und nützliche Konfiguration
dired-x ist eine eingebaute Erweiterung, die nicht standardmäßig geladen wird. Sie bringt zusätzliche Befehle, die Vanilla-Dired entscheidend bequemer machen — allen voran dired-jump.
| Aufruf | Befehl | Wirkung |
|---|---|---|
| C-x C-j | dired-jump | Dired im Verzeichnis der aktuellen Datei öffnen, Cursor auf ihr |
| C-x 4 C-j | dired-jump-other-window | dasselbe in einem anderen Window |
| M-x dired-omit-mode | dired-omit-mode | Filter-Modus für „uninteressante" Dateien (Backups, .DS_Store) |
dired-jump ist im Alltag der häufigste Einstiegspunkt überhaupt: aus jedem beliebigen Buffer heraus sofort zum zugehörigen Verzeichnis springen, oft schneller, als sich an den Dateipfad zu erinnern.
Eine kleine, aber wirkungsvolle init-el-Konfiguration:
;; dired-x laden (Built-in, nur nicht autoloaded)
(require 'dired-x)
;; -h = human-readable Groessen, Verzeichnisse zuerst
;; (--group-directories-first ist GNU-coreutils-spezifisch;
;; auf macOS-Default-ls weglassen oder GNU-ls via Homebrew nutzen)
(setq dired-listing-switches "-alh --group-directories-first")
;; Beim Kopieren/Verschieben mit zwei nebeneinander offenen Dired-Buffern
;; wird das jeweils ANDERE Verzeichnis als Ziel-Default vorgeschlagen.
;; Eine einzelne Zeile, die Dired auf Power-User-Niveau hebt.
(setq dired-dwim-target t)
;; Rekursives Kopieren / Loeschen ohne jedes Mal nachzufragen
(setq dired-recursive-copies 'always)
(setq dired-recursive-deletes 'top)
;; Beim Oeffnen eines Unterverzeichnisses denselben Buffer wiederverwenden
;; statt jedes Mal einen neuen aufzumachen
(setf dired-kill-when-opening-new-dired-buffer t)Wo dieser Code hingehört
Die Snippets gehören in deine init.el (typischerweise ~/.emacs.d/init.el oder ~/.config/emacs/init.el). Wie man die Konfiguration sauber strukturiert und welche Datei in welcher Reihenfolge geladen wird, behandelt der Artikel zu Konfiguration mit init.el und early-init.el ausführlich.
dired-dwim-target ist der größte Hebel von allen: Zwei Dired-Buffer nebeneinander, Datei markieren, R drücken — und Dired schlägt automatisch das Verzeichnis im anderen Window als Ziel vor. Das verwandelt Dired in einen klassischen Zwei-Fenster-Commander, ohne ein zusätzliches Paket zu installieren.
Moderne Alternativen: dirvish, treemacs, nerd-icons-dired
Dired ist seit Jahrzehnten stabil und reicht für die meisten Workflows. Wer mehr Komfort möchte, hat drei prominente Optionen — alle drei bauen auf Dired auf statt es zu ersetzen, also bleiben die gewohnten Tasten erhalten.
| Paket | Charakter | Sinnvoll, wenn … |
|---|---|---|
dirvish | modernes Dired-Upgrade: Preview-Panel, Icons, Git-Integration, Breadcrumb | du Dired täglich nutzt und einen „Finder-Ersatz" willst |
treemacs | persistente Sidebar mit Verzeichnis-Tree, Projekt-orientiert | du eine IDE-typische Datei-Sidebar gewohnt bist |
nerd-icons-dired | nur Icons in jedem Dired-Buffer, sehr leichtgewichtig | dir Vanilla-Dired reicht, nur visuell aufpoliert |
dirvish ist ein Drop-In-Ersatz: einmal aktiviert, übernimmt es jeden dired-Aufruf transparent. Der Preview-Panel zeigt Bilder, PDFs und Text-Dateien direkt im Nachbar-Window, ein Header-Bereich macht den aktuellen Pfad als Breadcrumb klickbar, und optionale Modules (z. B. dirvish-side als persistente Sidebar) erweitern das Bild. Alle Dired-Tasten funktionieren weiter — m, d, R, C-x C-q und alle anderen Bindings aus diesem Artikel verhalten sich identisch.
treemacs geht den umgekehrten Weg: keine Erweiterung von Dired, sondern eine eigene Sidebar mit Tree-View. Beide Welten lassen sich kombinieren — treemacs als persistente Übersicht links, Dired bei Bedarf für Mass-Operations.
nerd-icons-dired ist die minimalistische Option: ein Minor-Mode, der nur Datei- und Ordner-Icons in jeden Dired-Buffer einblendet. Kein Layout-Wechsel, kein neues Konzept, nur visuelle Information.
Die Empfehlung: erst ein paar Tage mit Vanilla-Dired arbeiten — wer die Tasten in den Fingern hat, kann bewusst entscheiden, ob dirvish den Mehrwert bringt. Beide Pakete werden im Customization-Kapitel ausführlich behandelt.
Besonderheiten
Dired ist ein vollwertiger Datei-Manager — auch remote
Über Tramp arbeitet Dired transparent auf Remote-Hosts: C-x d /ssh:server:/var/log/ RET öffnet das entfernte Verzeichnis mit denselben Tasten wie lokal. Markieren, kopieren, wdired — alles funktioniert über SSH.
Jeder Dired-Buffer ist ein normaler Emacs-Buffer
Du kannst mit C-s nach Dateinamen suchen, Bookmarks setzen, die Region markieren — alles, was Emacs an Werkzeugen hat, funktioniert. Dired ist „nur" ein Major-Mode mit speziellen Bindings, keine eigene Anwendung.
`wdired` ist eines der unterschätztesten Features in Emacs
Dateinamen als Text editieren, mit query-replace oder Multiple Cursors umbenennen, mit C-c C-c übernehmen. Wer es einmal gemacht hat, will keinen externen Bulk-Renamer mehr.
`dired-dwim-target = t` ist die wichtigste Ein-Zeilen-Konfig
Mit zwei nebeneinander geöffneten Dired-Buffern wird beim Kopieren/Verschieben automatisch der Pfad des Nachbar-Windows als Ziel-Default angeboten — Dired wird damit zum vollwertigen Zwei-Fenster-Commander.
`C-x C-j` (`dired-jump`) ist das beste „wo bin ich gerade?“-Werkzeug
Aus jeder Datei heraus aufrufbar, springt Dired direkt ins zugehörige Verzeichnis und setzt den Cursor auf die Datei. Wer es einmal gebunden hat, möchte es nie wieder missen — Voraussetzung: (require 'dired-x).
Bei sehr großen Verzeichnissen wird Dired spürbar langsam
Ab ~10 000 Dateien wirkt das Listing träge — vor allem, weil Emacs für jede Zeile die VC-Information abfragt. dired-omit-mode reduziert die Anzeige, und das Deaktivieren von vc-handled-backends für solche Buffer beschleunigt die Darstellung deutlich.
`g` nach externen Änderungen ist Pflicht
Dired zeigt einen Schnappschuss, kein Live-Listing. Was ein anderes Tool außerhalb von Emacs angelegt, gelöscht oder umbenannt hat, taucht erst nach g (revert-buffer) korrekt auf.
`dirvish` ist ein Drop-In, kein Ersatz
Wer Dired durch dirvish ablöst, behält alle Tasten und alle Workflows aus diesem Artikel — Markieren, Mass-Operations, wdired, Shell-Bridge funktionieren identisch. Kein Umlernen nötig.
Weiterführende Ressourcen
Externe Quellen
- GNU Emacs Manual — Dired — offizielle Referenz mit allen Befehlen und Varianten.
- GNU Emacs Manual — Entering Dired —
C-x d,C-x 4 d,C-x 5 dunddired-listing-switches. - GNU Emacs Manual — Wdired — editierbares Dired im Detail.
- GNU Emacs Manual — Dired-X —
dired-jump,dired-omit-modeund weitere Erweiterungen. - dirvish auf GitHub — modernes Dired-Upgrade mit Preview, Icons und Git-Integration.
- treemacs auf GitHub — persistente Sidebar mit Tree-View.
- nerd-icons-dired auf GitHub — Icons für jeden Dired-Buffer.