Я пытаюсь заменить число, состоящее из n цифр в имени файла, шаблоном, подобным% 03ld или% 04ld соответственно (в зависимости от количества цифр).
Например:
"img/img_000.png"
-> "img/img_%03ld.png"
"RA20190201_A/img_1030.tif"
-> "RA20190201_A/img_%04ld.tif"
".../SomeImage_z004.tif"
-> ".../SomeImage_z%03ld.tif"
As Вы можете видеть
- число не всегда состоит только из
0
s - за ним всегда следует расширение файла (которое может варьироваться)
- путь может содержать другие числа, которые не имеют отношения (и должны остаться без изменений)
Я думаю, что это можно легко сделать, используя python (или другие языки), но я пытаюсь сделать это один вкладыш с linux встроенными инструментами, такими как awk
или sed
с использованием труб.
Мне удалось посчитать цифры с помощью функции awk
s gsub
:
> echo "9001_bla/img_0001.png" | awk '{print gsub(/[0-9]/, "")}'
8
Но мне не удалось выделить подсчет на соответствующей части и выполнить фактическую замену.
Как этого добиться?