30.6. Dired Marks vs. Flags

Instead of flagging a file with D, you can mark the file with some other character (usually *). Most Dired commands to operate on files, aside from "expunge" (x), look for files marked with *.

Here are some commands for marking with *, or for unmarking or operating on marks. (Section 30.3, for commands to flag and unflag files.)

m, * m

Mark the current file with * (dired-mark). With a numeric argument n, mark the next n files starting with the current file. (If n is negative, mark the previous −n files.)

* *

Mark all executable files with * (dired-mark-executables). With a numeric argument, unmark all those files.

* @

Mark all symbolic links with * (dired-mark-symlinks). With a numeric argument, unmark all those files.

* /

Mark with * all files which are actually directories, except for . and .. (dired-mark-directories). With a numeric argument, unmark all those files.

* s

Mark all the files in the current subdirectory, aside from . and .. (dired-mark-subdir-files).

u, * u

Remove any mark on this line (dired-unmark).

DEL, * DEL

Move point to previous line and remove any mark on that line (dired-unmark-backward).

* !

Remove all marks from all the files in this Dired buffer (dired-unmark-all-files-no-query).

* ? markchar

Remove all marks that use the character markchar (dired-unmark-all-files). The argument is a single character--do not use RET to terminate it. See the description of the * c command below, which lets you replace one mark character with another.

With a numeric argument, this command queries about each marked file, asking whether to remove its mark. You can answer y meaning yes, n meaning no, or ! to remove the marks from the remaining files without asking about them.

* C-n

Move down to the next marked file (dired-next-marked-file) A file is "marked" if it has any kind of mark.

* C-p

Move up to the previous marked file (dired-prev-marked-file)

* t

Toggle all marks (dired-do-toggle): files marked with * become unmarked, and unmarked files are marked with *. Files marked in any other way are not affected.

* c old-markchar new-markchar

Replace all marks that use the character old-markchar with marks that use the character new-markchar (dired-change-marks). This command is the primary way to create or use marks other than * or D. The arguments are single characters--do not use RET to terminate them.

You can use almost any character as a mark character by means of this command, to distinguish various classes of files. If old-markchar is a space ( ), then the command operates on all unmarked files; if new-markchar is a space, then the command unmarks the files it acts on.

To illustrate the power of this command, here is how to put D flags on all the files that have no marks, while unflagging all those that already have D flags:

* c D t  * c SPC D  * c t SPC

This assumes that no files were already marked with t.

% m regexp RET, * % regexp RET

Mark (with *) all files whose names match the regular expression regexp (dired-mark-files-regexp). This command is like % d, except that it marks files with * instead of flagging with D. Section 30.4.

Only the non-directory part of the file name is used in matching. Use ^ and $ to anchor matches. Exclude subdirectories by hiding them (Section 30.13).

% g regexp RET

Mark (with *) all files whose contents contain a match for the regular expression regexp (dired-mark-files-containing-regexp). This command is like % m, except that it searches the file contents instead of the file name.

C-_

Undo changes in the Dired buffer, such as adding or removing marks (dired-undo).