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.)
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.
Mark all the files in the current subdirectory, aside from . and .. (dired-mark-subdir-files).
Remove any mark on this line (dired-unmark).
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).
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.
Move down to the next marked file (dired-next-marked-file) A file is "marked" if it has any kind of mark.
Move up to the previous marked file (dired-prev-marked-file)
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.
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.
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).
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.
Undo changes in the Dired buffer, such as adding or removing marks (dired-undo).