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 d

Oder als sichere Bank über den Befehlsnamen:

M-x dired RET

Beide 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:

AufrufWirkung
C-x dDired im aktuellen Window öffnen
C-x 4 dDired in einem anderen Window (gesplittetem Frame) öffnen
C-x 5 dDired in einem anderen Frame (neuem OS-Fenster) öffnen
C-x C-f + PfadDatei-Ö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.

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.

TasteBefehlWirkung
n / pdired-next-line / dired-previous-linenächste / vorherige Datei
C-n / C-pdieselbe FunktionAlternative mit den Standard-Bewegungs-Tasten
RET oder fdired-find-fileDatei / Unterverzeichnis im selben Window öffnen
odired-find-file-other-windowDatei in einem anderen Window öffnen
vdired-view-fileDatei nur anschauen (read-only View-Mode)
^dired-up-directoryeine Verzeichnis-Ebene nach oben
grevert-bufferVerzeichnis neu einlesen (nach Änderungen draußen)
sdired-sort-toggle-or-editSortierung zwischen Name und Datum umschalten
qquit-windowDired-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-buffer auf.
  • 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).

TasteBefehlWirkung
mdired-markaktuelle Datei mit * markieren
udired-unmarkMarkierung der aktuellen Datei entfernen
Udired-unmark-all-marksalle Markierungen im Buffer entfernen
tdired-toggle-marksMarkierungen invertieren (markierte ↔ unmarkierte)
* .dired-mark-extensionalle Dateien mit bestimmter Endung markieren
* /dired-mark-directoriesalle Verzeichnisse markieren
* sdired-mark-subdir-filesalle Dateien des aktuellen Verzeichnisses markieren
* %dired-mark-files-regexpDateien per Regex markieren (Prompt nach Pattern)
ddired-flag-file-deletionDatei als zu löschen flaggen (Marker D)
xdired-do-flagged-deletealle 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":

text Beispiel — Dateien per Regex markieren
* %                       ; 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 verschieben

Mass-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.

TasteBefehlAktion auf markierte / aktuelle Dateien
Cdired-do-copykopieren (Prompt nach Ziel)
Rdired-do-renameverschieben / umbenennen
Ddired-do-deletesofort löschen (mit Rückfrage)
Hdired-do-hardlinkHardlink anlegen
Sdired-do-symlinkSymlink anlegen
Mdired-do-chmodPermissions ändern (Prompt z. B. +x, 644)
Odired-do-chownEigentümer ändern
Tdired-do-touchTimestamp setzen (Prompt nach Zeit)
Zdired-do-compressgzippen / entpacken (kontext-abhängig)
Pdired-do-printDruckauftrag

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:

text Beispiel — alle Scripts ausführbar machen
* .                       ; nach Endung markieren
sh RET                    ; alle *.sh-Dateien
M                         ; dired-do-chmod
+x RET                    ; ausfuehrbar fuer alle

Drei 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:

PlatzhalterBedeutung
?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.

text Beispiel — typische Shell-Bridge-Aufrufe
! 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 Datei

Mit & (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/sh bzw. die OS-Standard-Shell). Bash-spezifische Konstrukte wie Process-Substitution funktionieren nur, wenn diese Variable auf bash/zsh zeigt.
  • 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.

TasteBefehlWirkung
C-x C-qwdired-change-to-wdired-modein den editierbaren Modus wechseln
C-c C-cwdired-finish-editÄnderungen anwenden (Dateien umbenannt)
C-c C-kwdired-abort-changesÄnderungen verwerfen, zurück zu Dired
C-c C-[wdired-abort-changesidentisch

Klassischer Use-Case — 200 Bilder vom Smartphone umbenennen:

text Beispiel — Bulk-Rename mit wdired
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 umbenannt

Was 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.

AufrufBefehlWirkung
C-x C-jdired-jumpDired im Verzeichnis der aktuellen Datei öffnen, Cursor auf ihr
C-x 4 C-jdired-jump-other-windowdasselbe in einem anderen Window
M-x dired-omit-modedired-omit-modeFilter-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:

elisp init.el — Dired sinnvoll aufmöbeln
;; 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.

PaketCharakterSinnvoll, wenn …
dirvishmodernes Dired-Upgrade: Preview-Panel, Icons, Git-Integration, Breadcrumbdu Dired täglich nutzt und einen „Finder-Ersatz" willst
treemacspersistente Sidebar mit Verzeichnis-Tree, Projekt-orientiertdu eine IDE-typische Datei-Sidebar gewohnt bist
nerd-icons-dirednur Icons in jedem Dired-Buffer, sehr leichtgewichtigdir 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

Verwandte Artikel

/ Weiter

Zurück zu Dateien & Verzeichnisse

Zur Übersicht