Как изменить суффикс нумерации для серии имен файлов?

Как изменить суффикс нумерации для серии имен файлов?

Вот пример серии файлов с суффиксом нумерации в имени файла.

  • экран1.png
  • экран2.png
  • экран3.png
  • экран4.png
  • экран5.png
  • экран6.png
  • экран7.png
  • экран8.png

Теперь, если бы я по какой-то причине переименовал эти файлы так, чтобы нумерация начиналась с 2, мне пришлось бы переименовать screen1.png в screen2.png, а screen2.png в screen3.png и т. д. Но это не сработает уже в тот момент, когда я попытаюсь переименовать screen1.png в screen2.png, так как файл с таким именем уже существует.

Вот как мне нравится называть файлы, когда я делаю серию снимков экрана в Windows. Поэтому иногда я могу оказаться в таких ситуациях. Я мог пропустить один снимок экрана, возможно, тот, который показывает какой-то процесс настройки, который со временем происходит до снимка экрана 5, но после снимка экрана 4. Это должен быть номер 5, но чтобы сохранить его, мне сначала придется переименовать screen5.png в screen6.png и все последующие файлы, чтобы расположить их в хронологическом порядке.

Переименовать:

  • экран1.png
  • экран2.png
  • экран3.png
  • экран4.png
  • экран5.png > экран6.png
  • экран6.png > экран7.png
  • экран7.png > экран8.png
  • экран8.png > экран9.png

Результат:

  • экран1.png
  • экран2.png
  • экран3.png
  • экран4.png
  • экран6.png
  • экран7.png
  • экран8.png
  • экран9.png

Файл добавлен:

  • экран1.png
  • экран2.png
  • экран3.png
  • экран4.png
  • экран5.png+
  • экран6.png
  • экран7.png
  • экран8.png
  • экран9.png

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

решение1

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; rename screen$i.png screen$j.png }

Вы можете успокоить себя, запустив это в первую очередь

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; print "rename screen$i.png screen$j.png\n" }'
rename screen8.png screen9.png
rename screen7.png screen8.png
rename screen6.png screen7.png
rename screen5.png screen6.png

Для Windows вам придется использовать " вместо ' и qq(...) вместо "...".

решение2

Все, что вам нужно, это файловый менеджер с функцией "Множественное переименование файлов" (все конфликты имен разрешаются автоматически). Большинство таких менеджеров позволяют редактировать файлы во внешнем редакторе, где редактирование номеров происходит гораздо быстрее, чем в файловом менеджере. По крайней мереTotal CommanderиНереальный Командиресть такая функция.

Или вы можете написать небольшие однострочные скрипты, чтобы сделать это с помощью оболочки.

Вы также можете использовать автономный скрипт для множественного переименования файлов, напримервимв, есть еще похожие скрипты. Их можно настроить на использование другого редактора, хотя, по моему мнению, Vim подходит для этого больше, чем любой другой редактор, так как он имеетПлагин VisIncrи встроенные команды увеличения/уменьшения числа ( :help CTRL-Aи :help CTRL-X).

Другой вариант — использоватьвифм, который поддерживает увеличение/уменьшение чисел в именах выбранных файлов (те же клавиши, что и в Vim). Но это консольное приложение и в основном для людей, зависимых от Vim.

Связанный контент