4

Я ищу решение, как выполнить поиск и замену во всех файлах в каталоге, используя Emacs.

2 ответа2

7

Я нашел решение сам. Dired имеет встроенную функциональность для этого. См. Статью Интерактивный поиск и замена строковых шаблонов в нескольких файлах для получения дополнительной информации.

0

Как упоминалось в другом ответе, вы захотите использовать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .