LinuxForum.Fans
Тема

Переименование файлов в зависимости от номера в имени

Автор: Alex__ks 3 сообщений 2458 просмотров
#389773

Добрый вечер.
Помогите ( никак не соображу как решить данный вопрос в командной строке)

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 и т.д.)
Условие:

  1. -прибавить к числу в имени значение переменной $x = 499 ( к примеру)
  2. -если буквенный индекс у каждого из файлов ( под номерами) ( 1а,1b,1c ... ) идет не по алфавиту , а например (1b, 1e, 1f) , то привести к виду 1a,1b,1c ну и т.д.
  3. -все что в верхнем регистре привезти к нижнему
  4. -с конвертировать все файлы с разными расширениями , в одно (jpg) - в принципе предыдущее условие с этим можно совместить частично, через цикл с imagemagic потом отдельно
text

$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.
Ну и с буквами по алфавиту ( было где-то подобное решение через цикл, правда на СИ )

#389776

Для вычислений используйте eval.

#389822
"yars" написал:
Для вычислений используйте eval.

спасибо - буду думать

Войдите или зарегистрируйтесь, чтобы ответить.