paulvonlecter
@paulvonlecter
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 \;

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

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

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

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

Войти через центр авторизации
Похожие вопросы