Introduction to Dired Mode

DIRED (short for Directory Editor) is the native file manager of Emacs. It was the first file manager, or visual editor of file system information ever created. The first version of Dired was written as a stand-alone program circa 1974 by Stan Kugell at the Stanford Artificial Intelligence Laboratory (SAIL). It was incorporated into GNU Emacs from the earliest versions and re-implemented in C and C++ on other operating systems. For more information, check out its manual.

In this article, we cover the basics of using Dired within Emacs. Also check out this awesome cheat sheet by Sacha Chua, which covers most of the below. For a nice comprehensive summary of all the features of Dired, simply enter h when within Dired Mode.

It’s not as scary as it looks (Credits: Wikipedia)

Starting & Exiting Dired

You can start Dired Mode with C-x d, which will then prompt you to enter the directory you wish to view. You can also enter Dired with C-x C-f and then typing the directory you wish to view (as opposed to entering a filename).

Dired Mode is a read-only buffer, so many of the commands are single letter keystrokes. You can exit Dired mode with q.

As a final note, you can use wildcards * to filter the files you want to view in Dired. The first command below opens all .el files within ~/foo/ whilst the second command below opens all .el files in all subdirectories of ~/foo/.

C-x d  ~/foo/*.el  RETC-x d  ~/foo/*/*.el  RET

Navigating the Dired Buffer

You can use n to move to the next line, p to move to the previous line. You can use M-< and M-> to move to the start and end of the buffer respectively.

You can jump to a file within the directory listing with j (which will then prompt you to the file you want to jump to). You can toggle between sorting alphabetically and by last modified with s.

Opening Files

You can open files with f or with RET (enter). You can open files in read-only view mode with v.

Navigating the File System

We can move up a directory with ^. You can also press f or RET on the .. listing, but ^ works better as it will keep your point on the directory you came from (try both and see).

Deleting Files

There are two approaches to deleting files:

  • Use d to flag files and then delete them with x (you can unflag files with u)
  • Use m to mark files and then delete them with D (that’s a capital letter) (again, you can unmark files with u)

To send the files to your trash and not permanently delete them, add the following to you .emacs (with the second command for MacOS users, and in general I only tested the below on my Mac so your mileage may vary):

(setq delete-by-moving-to-trash t)(if (eq system-type 'darwin)
(setq trash-directory "~/.Trash"))

Marking Files

The marking done above in the second approach for deleting files (m to mark and u to unmark) is also used when trying to copy and move multiple files, per below. We can use t to toggle all files currently marked to unmarked and all unmarked files to marked. You can also mark all files with * s.

Copying Files

You can copy files with C (you will be prompted for where to copy the file to). When more than one file is marked (i.e. selected), you will be copying these files to a new directory.

Renaming & Moving Files

You can rename files with R (you will be prompted for the new name — you can use this to also move the file as you can edit the file path of the renamed file). When more than one file is marked, you will be rather moving these files files to a new directory.

Touching Files

Sometimes you want to update the timestamp of a file (e.g. to trigger some process like a compiler to pick up the updated file). This can be done with T.

Creating New Directories & Files

You can create new directories with +. You can create new files with C-x C-f (this is just the normal create file command and not actually a dired feature, but noting here for completeness).

Refreshing the Dired Buffer

You can refresh the contents of the dired buffer with g.

Appendix: Beyond Dired

One of our readers has kindly pointed out that a lot has happened in the decades since dired was first created, with many people contributing additional features. Some features have been absorbed into Emacs itself, but many still exist only as add-on packages. There are roughly 50 extensions to Dired on Melpa, so something that is worth checking out if its an area of interest to you.

One such package is diredc, written by Boruch Baum. diredc adds a whole lot of additional functionality to Dired, including for example, the ability to view, manage, restore, or empty your trash. I am impressed by its quality of documentation, and recommend it to you if you are interested in such packages. Check it out!




Masters in Quantitative Finance. Writing Computer Science articles and notes on topics that interest me, with a tendency towards writing about Lisp & Swift

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Make methods static if you can

The Mindset to Programming

Top 5 most useful keyboard shortcuts in IntelliJ IDEA

Bocconcini di linguistica @Treccani

Deploy Wisely with StackScript, Say No to Azure/AWS

SQL Error — ORA-00904: “%s: invalid identifier”

it hardens in response to standing still for 1 second

[Solved]The mouse appears jerky in the virtual machine in CentOs

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Ashok Khanna

Ashok Khanna

Masters in Quantitative Finance. Writing Computer Science articles and notes on topics that interest me, with a tendency towards writing about Lisp & Swift

More from Medium

Useful tweaks for Windows: get more performance and protect your privacy

And Then You Win

How to try Linux without removing your existing operating system (yes it’s possible)

Detailed explanation on how shebang “#!” ( script ) binary format works in Linux