![在 Emacs 中,如何在目录和所有子目录中搜索文件名?](https://linux22.com/image/1258556/%E5%9C%A8%20Emacs%20%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%E7%9B%AE%E5%BD%95%E5%92%8C%E6%89%80%E6%9C%89%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%9F.png)
在 Emacs 中,如何在目录和所有子目录中搜索文件名?
答案1
您可以使用M-x find-name-dired
。它将要求一个目录和一个通配符模式,因此您可以输入类似的内容*thing*
,并将名称中带有“thing”的所有文件列在 dired 缓冲区中。
更多内容请见:http://emacswiki.org/emacs/RecursiveGrep(附带一个可以让你跳过写出星星的片段)。
答案2
在 dired 中,你可以移动到第一行,然后按下C-u l
并添加R
转变。然后您可以在缓冲区中搜索文件名,或者使用基于正则表达式标记文件% m
。
在 Linux 或带有 Cygwin 实用程序的 Windows 上,或者带有 GNU find 的其他类 unix 系统上,一种快速而肮脏的破解方法是M-x grep-find
,并编辑命令行以仅包含find
具有适当格式的部分:
find -type f -name '*.foo' -printf '%p:0:\n'
在任何具有可用 unix 工具的系统上,您都可以使用 运行该find
命令M-! find
。在输出缓冲区中,您可以使用M-x ffap
访问所选文件。您还可以设置 dired-x因此C-u C-x C-f
可以用来代替M-x ffap
。
答案3
现在,可以使用函数来实现这一点directory-files-recursively
。
答案4
您可以打开:*/foo.bar
在当前目录的直接子目录中查找名为 foo.bar 的任何文件,或者**/foo.bar
在当前目录的子目录中递归查找名为 foo.bar 的任何文件。