在Emacs文件浏览器中转换文件名(regexp)的大小写

时间:2012-05-21 21:45:50

标签: regex emacs dired case-conversion

我遇到与

中提到的问题类似的问题

Emacs: regular expression replacing to change case

我想使用Emacs的文件浏览器模式Dired将文件从08 - hey you.mp3重命名为08 - Hey you.mp3

我键入% R^\([0-9]* - \)\([a-z]\)\(.*\)$替换\1\,(upcase \2)\3,我收到错误

Invalid use of `\' in replacement text

当我在普通文本缓冲区中查询替换-regexp时,\([0-9]* - \)\([a-z]\)\(.*\)的类似正则表达式\1\,(upcase 2)\3我没有问题。唯一的输入差异是封闭的^$,这是http://www.gnu.org/software/emacs/manual/html_node/emacs/Transforming-File-Names.html#Transforming-File-Names中所解释的,但是错误来源似乎是\,(upcase ),这似乎无法使用在Dired中,因为当我使用例如\1\3\2作为替换regexp时我没有此错误。

我正在使用Emacs 23.2.1

1 个答案:

答案 0 :(得分:2)

直接电话% R中的

dired-do-rename-regexp最终会从replace-match拨打dired-string-replace-match,而且替换匹配不支持elisp替换。

您可以利用wdired,它允许您将目录列表编辑为纯文本。

C-x C-q (即通常的toggle-read-only绑定)将在dired和wdired之间切换。进入wdired后,您可以使用普通搜索和替换,包括elisp替换模式。