如何将目录树中递归地将名称与特定正则表达式一致的所有文件引入单个Dired缓冲区?
因此,我可以一次重命名/删除它们吗?
find-dired+.el
为您提供了增强的command版本find-name-dired
。它接受可选的参数,这些参数指定(1)最小和最大搜索深度以及(2)要从搜索中排除的路径。
如何将目录树中递归地将名称与特定正则表达式一致的所有文件引入单个Dired缓冲区?
因此,我可以一次重命名/删除它们吗?
find-dired+.el
为您提供了增强的command版本find-name-dired
。它接受可选的参数,这些参数指定(1)最小和最大搜索深度以及(2)要从搜索中排除的路径。
Answers:
采用
M-x find-name-dired
根据通配符获取文件。
在目录“〜/ org /”中找到所有后缀为“ org”的文件。输入以下内容
M-x find-name-dired
~/org
*org
享受。
采用
M-x find-dired
带有合适的参数以根据正则表达式获取文件。
在目录“〜/ org /”中找到所有后缀为“ org”的文件。输入以下内容
M-x find-dired
~/org
-regex ".*org$"
享受。
*org
无需手动输入它
my-find-orgfiles ()
紧随其后的是“ t”和“ Q” //并全部选择并应用吗?@Marco Wahl
要使用正则表达式,您也可以尝试find-lisp-find-dired
。该命令属于标准库。find-lisp,它完全用elisp编写,即,您不需要安装外部
find
程序。
例如,以下显示了目录〜/ lisp下所有扩展名为'.el'的文件:
M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET
(比赛获得荣誉case-fold-search
)。
值得注意的是,自从下一个Emacs版本(v26.1)起,Dired在文件名参数的目录部分中支持通配符。这意味着以下工作:
C-x d ~/soft/*/*.c RET
(匹配项区分大小写)。
此命令在Dired缓冲区中显示所有扩展名为'.c'的文件,在'〜/ soft'下具有2个深度级别。这意味着将列出所有类似于 '〜/ soft / foo / bar.c'的文件,但不会列出诸如'〜/ soft / qux.c' 或'〜/ soft / foo / baz / qux.c'等文件。
相同但不区分大小写:
C-x d ~/soft/*/*.[cC] RET
如果运行Dired并在elisp,'ls-lisp'或'eshell-ls'中实现了'ls',则可以使用以下语法递归列出与通配符匹配的所有文件:
C-x d ~/soft/**/*.c RET
注意“ **”。在这种情况下,将显示与通配符匹配的'〜/ soft'下的所有文件,甚至是'〜/ soft / qux.c'。
但是,当您使用insert-directory-program
通配符扩展时,是由系统外壳进行的;这意味着,这种递归的“ **”语法仅在您的shell支持时才有效。例如,zsh支持它,但bash不支持。对于zsh以外的其他外壳,上一个命令将执行以下操作:
C-x d ~/soft/*/*.c RET