(define-key dired-mode-map "/" #'dired-name-filter-only-show-matched-lines)
(defun dired-name-filter-only-show-matched-lines (filter-regexp)
(interactive "s(只显示匹配的文件): ")
(let ((dired-marker-char 16)
(files (directory-files default-directory t)))
(save-excursion
(dolist (file files)
(when (and (dired-goto-file (expand-file-name file))
(not (string= "" filter-regexp))
(string-match filter-regexp (file-name-nondirectory file)))
(dired-mark 1))))
(dired-toggle-marks)
(dired-do-kill-lines nil (concat "Filter:'" filter-regexp "' omitted %d line%s"))
(when (eobp) (forward-char -1))
(dired-move-to-filename)))
1 个赞
看起来效果等同于:
-
% m
(dired-mark-files-regexp
) -
t
(dired-toggle-marks
) -
k
(dired-do-kill-lines
)
整理成一个命令:
(defun foo ()
(interactive)
(call-interactively #'dired-mark-files-regexp)
(command-execute "tk"))
4 个赞