Я ищу решение, как выполнить поиск и замену во всех файлах в каталоге, используя Emacs.
2 ответа
Я нашел решение сам. Dired имеет встроенную функциональность для этого. См. Статью Интерактивный поиск и замена строковых шаблонов в нескольких файлах для получения дополнительной информации.
Как упоминалось в другом ответе, вы захотите использовать dired.
Сначала отметьте файлы с помощью клавиши m
. В качестве альтернативы вы можете использовать % m
для dired-mark-files-regexp
(в случае маркировки всех файлов ставьте .*
качестве регулярного выражения).
Вы захотите использовать % R
для dired-do-rename-regexp
. Это ограничит регулярное выражение переименования отмеченными файлами. Вам придется использовать синтаксис регулярных выражений Emacs, который отличается от обычного синтаксиса Unix.
Если бы у меня было несколько файлов в каталоге с именем следующего:
01.png
02.png
03.png
04.png
И я хотел, чтобы они были переименованы, чтобы все они имели префикс главы 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