Добрый вечер.
Помогите ( никак не соображу как решить данный вопрос в командной строке)
1-Есть папка foto в ней файлы: 1a.jpg, 1b.JPG, 1c.JPG, 1d.JPG, 2A.JPG, 2d.JPG, 2,e.png, 3.B.PNG, 4.a.JPEG, 4.B.jpeg ну и т.д. ( более 500 шт)
2-Надо переименовать их по условию скопировав в папку к примеру foto2 ( с выводом в фаил bilo.out , все файлы 1*.* = 500\n, 2*.*=501\n и т.д.)
Условие:
- -прибавить к числу в имени значение переменной $x = 499 ( к примеру)
- -если буквенный индекс у каждого из файлов ( под номерами) ( 1а,1b,1c ... ) идет не по алфавиту , а например (1b, 1e, 1f) , то привести к виду 1a,1b,1c ну и т.д.
- -все что в верхнем регистре привезти к нижнему
- -с конвертировать все файлы с разными расширениями , в одно (jpg) - в принципе предыдущее условие с этим можно совместить частично, через цикл с imagemagic потом отдельно
$x=499
$find . -type f -name '*' | sed 's/\(\d)+$x\[a-z][.]$jpg\L/ ' # 'это не правильно, но ничего в голову не приходит, не дружу совсем с регулярными
$for f in *;do convert "$f" "foto2/${%f}.jpg";done # конвертация
Основная проблема с прибавление переменной к цифре в имени ( без разбиения имени через цикл на куски и потом обратно ) получается обычная конкатенация по типу 1a.jpg стало 1+499a.jpg, а надо 500а.jpg.
Ну и с буквами по алфавиту ( было где-то подобное решение через цикл, правда на СИ )