Is there away to filter the directory list provided by Dired
by showing or hiding all files which match a regular expression? Say I just
wanted to see files in the current directory which ended with .html.
Thanks for everything!
- Corey Foote
Toby Software LLC
Here is one way :
1. Mark all files you want to see with `%m'
2. Inverse the marks via `*t'
3. Invoke `dired-do-kill-lines' with `k'
4. Reset the listing with `g'
Wrapped up in a function :
(defun dired-show-only (regexp)
(interactive "sFiles to show (regexp): ")
(define-key dired-mode-map [?%?h] 'dired-show-only)
> Is there away to filter the directory list provided by Dired
> by showing or hiding all files which match a regular expression?
> Say I just
> wanted to see files in the current directory which ended with .html.
Dired-x offers some extras ...
Atheism is a non prophet organization.
Yes, there are several ways to do that. Here are a few. Other people will
perhaps add others.
1. You can open Dired on just the files that match a shell globbing pattern. For
example, `C-x d f*.html' opens Dired on only files that start with `f' and end
with `.html'. This is not using a regexp, but it is sufficient for your
2. The rest of the items here work with the marked files in Dired. So first use
`% m' to mark the files you want using a regexp. `% m' acts on all files in the
Dired buffer, including files in inserted subdirectories.
3. Library `dired-aux.el' gives you command `dired-do-kill-lines', which is
bound to `k'. It hides (omits, "kills") the (lines for the) files that are
marked. Use `l' or `g' to show the (hidden) marked files again. Again, marked
files in included subdirs are omitted too.
4. If you use library `dired+.el', then `dired-do-kill-lines' is also available
in the `Mark' menu as item `Omit Marked'. You can also use item `Omit Unmarked'
to omit all except the marked files (same as `t k t': toggle marked/unmarked,
then omit marked, then toggle again).
5. `dired+.el' also provides command `diredp-marked', which lets you open a
Dired buffer on just the marked files. In the menu, this is `Dired Marked Files'
or `Dired Marked Files in Other Window'. The other-window form is bound to
`C-M-*'. With this command, only the files that were marked will be present in
the new Dired buffer.
6. If you use Icicles, you can easily open Dired on a set of files from any
directories (not necessarily in the same directory tree). This is handy for
working on a project that spans directories. Define your project files once,
save that definition persistently, then open the project in Dired at any time.
You can also use combinations of Emacs filesets to define such a project.
BTW, `dired-do-grep' (also in `dired+.el'), bound to `M-g' in Dired, lets you
`grep' just the marked files or all of the files present in Dired.
> Is there away to filter the directory list provided by Dired by
> showing or hiding all files which match a regular expression?
Sure, it's emacs. You can use `dired-omit-mode' which in in
dired-x.el. Here's my setup:
(rx (or (seq bol (? ".") "#") ;; emacs autosave files
(seq bol "." (not (any "."))) ;; dot-files
(seq "~" eol) ;; backup-files
(seq bol "CVS" eol) ;; CVS dirs
(add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1)))
With `M-o' you cat toggle the mode.
Hope that helps,