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 `*' (and also for unmarking). (See Dired Deletion, for commands to flag and unflag files.)
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.)
dired-mark-executables ). With a numeric argument, unmark all those files.
dired-mark-symlinks ). With a numeric argument, unmark all those files.
dired-mark-directories ). With a numeric argument, unmark all those files.
dired-unmark-all-files ). If you specify RET as markchar, this command removes all marks, no matter what the marker character is. 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, ! to remove the marks from the remaining files without asking about them.
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 is a space (` '), then the command operates on all unmarked files; if new is a space, then the command unmarks the files it acts on.
To illustrate the power of this command, here is how to put `*' marks on all the files that are unmarked, while unmarking all those that have `*' marks:
c * t c SPC * c t SPC
dired-mark-files-regexp ). % m is like % d, except that it marks files with `*' instead of flagging with `D'. See Flagging Many Files. Only the non-directory part of the file name is used in matching. Use `^' and `$' to anchor matches. Exclude subdirectories by hiding them (see Hiding Subdirectories).