Используйте rename
для замены каждого числа самим собой минус 1.
$ rename -v 's/\d{6}/sprintf("%06",($&-1))/e'
Примечания
rename
использует выражения Perl для переименования файлов. s
указывает, что rename
заменит некоторые или все имена файлов, соответствующие шаблону регулярного выражения. s/PATTERN/REPLACEMENT/MODIFIER
\d{6}
— это шаблон, который rename
будет искать и заменять. Это 6 десятичных цифр. $
— это переменная, в которой хранится подстрока, совпадающая с \d{6}
(, в данном случае «подстрока» — это int ). sprintf("%06",($&-1))
извлекает значение, хранящееся в $
, уменьшает его на единицу, а затем возвращает это значение в качестве замены. %06
предназначен для обработки ведущих нулей. e
указал, что rename
оценивает замену, как если бы это был оператор Perl, и использует возвращаемое значение в качестве текста замены.-v
заставляет rename
повторять то, что он делает. Если вы хотите быть в большей безопасности, используйте флаг -n
, чтобы rename
только сообщал вам, что он будет делать, вместо того, чтобы делать это.
Похоже, что это работает только для уменьшения, поэтому обращайтесь с этим осторожно.