The following executes a commands whose name contains
(defun execute-extended-dired-command () "Execute extended Dired command. Same as `execute-extended-command' with the difference that only command names matching the regexp \"dired\" are available. This is useful for commands that operate on files in Dired together with `partial-completion-mode' as limiting the number of matching commands makes it easier to find the relevant command. For example, typing e-p-d TAB at the M-x prompt would match four commands on my system whereas this command only matches the one I want, `emms-play-dired'." (interactive) (let (sym-list cmd) (mapatoms (lambda (sym) (if (and (string-match "dired" (symbol-name sym)) (commandp sym)) (setq sym-list (cons (symbol-name sym) sym-list))))) (setq cmd (completing-read "Executed extended Dired command: " sym-list)) (if cmd (call-interactively (intern cmd)))))
The binding I use:
(define-key dired-mode-map "\M-d" 'execute-extended-dired-command)
Smex includes the command ‘smex-major-mode-commands’ that generalizes this approach by applying the same routine to the currently active major-mode. When you are in dired-mode, it will present you with all commands relevant to Dired.