У меня есть приблизительно 200 .png
файлы в моей папке, называя как -
02.png
03.png
04.png
...
201.png
Поскольку Вы видите, что я не имею 01.png
таким образом, я хочу переименовать все файлы, уменьшающиеся одним, сделать его как -
01.png
02.png
03.png
...
200.png
Это действительно ли возможно сделать это через какую-либо команду в человечности?
Следующее является командой, которую я пробую без удачи -
rename -n '/d{2}\.png$d{2}-1\.png/' *.png
Это может быть сделано с несколько более сложным rename
команда:
rename -n 's/(\d{2,3}).png/sprintf("%02d", $1-1) . ".png"/e' *.png
Примечания:
/
.$1
с ()
(в этом случае (\d{2,3})
).100.png
станет 1-1.png
.e
после закрытия /
..
(следовательно . ".png"
).sprintf
. %02d
заполнит нулями, если Ваше число не будет иметь по крайней мере двух цифр.Пример:
$ rename -n 's/(\d{2,3}).png/sprintf("%02d", $1-1) . ".png"/e' *.png | head
02.png -> 01.png
03.png -> 02.png
04.png -> 03.png
05.png -> 04.png
06.png -> 05.png
07.png -> 06.png
08.png -> 07.png
09.png -> 08.png
100.png -> 99.png
101.png -> 100.png
В зависимости от версии rename
, это могло бы испытать затруднения при переименовании файлов, если цель уже существует. В таких случаях простое обходное решение должно создать временный каталог и переименовать/переместить файлы там:
mkdir temp
rename -n 's/(\d{2,3}).png/sprintf("temp\/%02d", $1-1) . ".png"/e' *.png
Отметьте это /
после temp
потребности, которых оставят, или это будет взято в качестве финала /
из a s//
команда.