Простите, что у меня нет исследований, но я просто не знаком со всеми инструментами.

Я хочу, чтобы пакетное переименование списка файлов, который идет как

some_name_n1_51000
some_name_n2_51000
some_name_n3_51000
...

это на самом деле должно быть названо

some_name_n51000_1
some_name_n51000_2
some_name_n51000_3
...

то есть 51000 и серийный номер должны поменяться местами.

Следующее работает в Debian, используя скрипт rename perl (который называется prename):

prename -nv 's/some_name_n(\d{1,2})_51000/some_name_n51000_$1' *

Обратите внимание, что -v дает подробный вывод, а -n - пробный прогон. Последний * - это селектор файлов.

Причины, по которым сначала это не сработало:

  • Я использовал rename вместо prename сценария perl .
  • Я забыл перехватить группу регулярных выражений между фигурными скобками, которая затем сохраняется в переменной $1 ($2 , $3 для второй и третьей группы и т.д.).

Что можно улучшить:

  • На Debian Strech это дает мне предупреждение об устаревании

    Используемая устаревшая программа: переименование, поставляемое с пакетом perl Debian, будет удалено после выпуска stretch. Пожалуйста, установите отдельный пакет «переименовать», который будет предоставлять ту же команду.

Пакет rename , однако, принимает немного другие команды.

0