Я ищу решение, как выполнить поиск и замену во всех файлах в каталоге, используя 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
