另一种办法,dired中有一个函数
find-lisp-find-dired
这玩意儿能找到指定目录里面,所有文件名匹配正则的文件。比如你的这个如果需要重命名所有py文件,调用后输入 .*.py$
关键是,这些找到的文件,都放到一个dired的buffer中的。
dired中重命名就方便了。我喜欢用 dired-toggle-read-only
,默认绑定到 C-x C-q
。
执行后,dired的buffer就可以修改了。这个方法就很多啦,query-replace-regexp
这些就足够了。
改好之后,直接 C-c C-c
(调用函数wdired-finish-edit
)提交就好啦。
如果改了后反悔了,就用 C-c C-k
(调用 wdired-abort-changes
)取消即可。
BTW: find-lisp-find-dired
这个函数是内置的,不过它是同步的,也就是说,如果你的目录中的文件比较多,emacs就卡住了。针对这个,懒猫大神搞了一个异步的玩意儿: Emacs: grep-dired 快速文件过滤和重构工具 。推荐试用一下