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