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

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png
  • screen6.png
  • screen7.png
  • screen8.png

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

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

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

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png> screen6.png
  • screen6.png> screen7.png
  • screen7.png> screen8.png
  • screen8.png> screen9.png

Результат:

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen6.png
  • screen7.png
  • screen8.png
  • screen9.png

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

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png+
  • screen6.png
  • screen7.png
  • screen8.png
  • screen9.png

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

2 ответа2

0
$ 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(...) вместо «...».

0

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

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

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

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

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