Я использую PCRE-совместимую программу переименования файлов. Есть ли какой-либо символ или шаблон, который я могу ввести в поле "заменить" программы, чтобы сказать ему добавлять цифры в конце имен файлов и что их следует увеличивать для каждого нового файла?

Вот пример, который я сделал на лету.

doc1 - Kopia (2) - Kopia.txt
doc1 - Kopia (2) - Kopia_2.txt
doc1 - Kopia (2).txt
doc1 - Kopia (2)_2.txt
doc1 - Kopia (3).txt
doc1 - Kopia (3)_2.txt
doc1 - Kopia - Kopia (2).txt
doc1 - Kopia - Kopia (2)_2.txt
doc1 - Kopia - Kopia - Kopia.txt
doc1 - Kopia - Kopia - Kopia_2.txt
doc1 - Kopia - Kopia.txt
doc1 - Kopia - Kopia_2.txt
doc1 - Kopia.txt
doc1 - Kopia_2.txt
doc1.txt
doc1_2.txt

Я хочу сохранить "doc" в начале, и я хочу сохранить расширение имени файла. В программе есть галочка, которая включает или отключает обработку расширений. Поэтому, если я оставлю это без контроля, мне не придется об этом беспокоиться. Я хочу, чтобы число после "doc" увеличивалось для каждого файла, поскольку мне не разрешено иметь несколько файлов с одинаковыми именами в одной папке.

Так что это должно закончиться.

doc1.txt
doc2.txt
doc3.txt
etc... you get the idea

Я использую только .* Как образец "соответствия". И я полагаю, что шаблон замены должен быть чем-то вроде doc{n} но что я должен набрать вместо {n} я понятия не имею. Есть ли такой простой шаблон, который я могу использовать здесь?

1 ответ1

1

Нет, для этого не существует конструкции регулярного выражения. Регулярные выражения делают одно: они соответствуют шаблонам и позволяют вам ссылаться на захваченные шаблоны. То, что вы запрашиваете, потребует увеличения переменной и войдет в область языков программирования. Такая особенность выходит за рамки регулярных выражений.

Если ваша программа поддерживает оценку произвольного кода как части его соответствия, например, s/foo/1+2/ для замены foo на 3 вы можете сделать это, но это не является функцией регулярных выражений.

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