我正在寻找如何使用 Emacs 在目录中的所有文件中执行搜索和替换的解决方案。
答案1
我自己已经找到了解决方案。迪雷德有内置功能可以实现这一点。请参阅文章以交互方式查找和替换多个文件中的字符串模式了解更多详情。
答案2
正如其他答案中提到的,你需要使用迪雷德。
首先通过 key 标记文件m
。或者,您可以使用% m
to dired-mark-files-regexp
(在标记所有文件的情况下,将其.*
作为正则表达式)。
您将需要使用% R
to dired-do-rename-regexp
。这会将重命名正则表达式限制为标记的文件。您必须使用与常规 unix 语法不同的 Emacs regexp 语法。
如果我在以下目录中有多个文件,其名称如下:
01.png
02.png
03.png
04.png
我希望对它们进行重命名,使它们都以 chapter-01 作为前缀,我将输入以下按键。
% m - mark regexp
.*\.png - mark all png files
% R - rename regexp
\([0-9]+\)\(\.png\) - matching regexp, save the parens into variables
chapter-01-\1\2 - utilizing the previous variables`
! - during the query to denote rename all the rest