Hannibal666
@Hannibal666
Nemo me impune lacessitt

Как рекурсивно обработать наборы файлов?

Имеем структуру папок и файлов:
<GROUP>
|-<DOCTYPE>
|--<STUDENT>
|---<FILENAME>-1.jpg
|---<FILENAME>-2.jpg
|---<FILENAME>-N.jpg
|---<OTHERNAME>-1.jpg
|---<OTHERNAME>-N.jpg

Нужно сделать так, чтобы в каждой папке (а их около 1500+) файлы FILENAME-1.jpg, FILENAME-2.jpg, FILENAME-N.jpg (далее - сканы страниц) склеились в PDF.
На сервере стоит imagemagick, поэтому рассматриваю вариант с convert.

Если выполнять все в каждой папке руками, то все выглядит замечательно, хотя иногда он путает страницы из-за неумения find сортировать вывод:
find . -type f "FILENAME-*.jpg" -exec convert {} FILENAME.pdf \;

Но при большом количестве папок становится как-то грустно.

Подскажите, пожалуйста, решение которое склеит сканы страниц без огрехов сортировки и при рекурсивном обходе папок.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
2ord
@2ord
продвинутый чайник
1. Если не ошибаюсь, набор файлов конвертируется в 1 pdf командой
convert filename-*.jpg out.pdf
2. Чтобы нумерация страниц была верной, файлы должны именоваться с ведущими нулями, иначе обработаются страницы 1, 10, 2, 3, ...
Осталось подумать как группировать файлы по именам , , ...
Ответ написан
Hannibal666
@Hannibal666 Автор вопроса
Nemo me impune lacessitt
Костыльно, топорно, imagick матерится, но вроде работает.
find . -type d -exec convert {}/FILENAME-*.jpg {}/FILENAME.pdf \;

Спасибо @2ord за наводку ;)
Буду благодарен за более элегантные решения!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ky0
Миллиардер, филантроп, патологический лгун
Можно же отсортировать вывод find`а и только потом натравливать на список convert. Например связкой find | sort | xargs convert, но вообще вариантов много.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
EXELO Омск
от 50 000 до 70 000 руб.
INCOMA Москва
До 100 000 руб.
HTML Academy Санкт-Петербург
от 120 000 до 140 000 руб.