Простите, что у меня нет исследований, но я просто не знаком со всеми инструментами.
Я хочу, чтобы пакетное переименование списка файлов, который идет как
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 , однако, принимает немного другие команды.
