我经常看看dired结构,通过递归显示整个目录:(dired dir "-lR")
。这在大多数情况下都很有用。
然而,有时候,我不想看到巨大的子目录结构。有没有办法递归杀死一个带有完整树的dired缓冲区中的子目录?
答案 0 :(得分:2)
我将find-dired
用于同一目的。要排除子目录,我在Run find (with args):
提示符下输入类似的内容:-path ./exclude_me -prune -o true
,这将为我提供一个目录的递归列表,不包括一个目录exclude_me
。这只适用于你使用类似Unix的函数版本的find。
编辑:删除树的另一种方法是简单地将dired缓冲区切换为可读( C-x C-q )并编辑缓冲区。
答案 1 :(得分:2)
好的,我刚写了以下的elisp:
(defun bp-kill-directory-rec()
(interactive )
(let (
(i (point))
(cur-dir (dired-current-directory)))
(beginning-of-buffer)
(while (search-forward cur-dir nil t)
(dired-kill-subdir))
(goto-char i)))
从您要杀死的目录开始,它将终止该目录的所有子目录。诀窍是(dired-current-directory)
给出了整个路径,因此搜索它应该只给出你要杀死的目录。如果你有一个目录结构,你有/home/a/b
和/home/c/d/home/a/b
之类的东西,那么可能会发生不好的事情。但是你必须有点疯狂,不是吗?
答案 2 :(得分:1)
使用Dired+,命令 diredp-kill-this-tree
。
只需将光标放在要从列表中删除的子目录中,然后调用该命令即可。插入的子目录及其所有插入(列出)的后代都将被删除。
在将点放在子目录列表中之后,您也可以通过以下任一方式调用此命令:
mouse-3
,然后选择项删除此插入的子目录并降低。