Создать книгу из файловой системы

Файловая система, представляющая книгу с каталогом, представляющим каждую главу и каждый раздел главы, где каждый файл page/.png находится в каталоге как p-страница раздела q главы n. Первая страница будет указана как 0/0/0, но страница 456 может быть третьей главой, а страница 4 второго раздела сделает ее 2/1/3 из каталога, содержащего все остальные файлы страниц /.png.

Как bash-скрипт рекурсивно просматривает каждый каталог и организует соответствующие страницы в нужную страницу, где файловая система может читаться как книга /pdf? Так что страница 1 (0/0/0 в файловой системе) будет в новом каталоге с блестящей меткой, отображающей 1 или 001, а страница / файл 456 (2/1/3) будет отображаться как замечательный 456?

Я нашел пару похожих проблем, которые используют что-то вроде следующего,

find . type -d | while read -r d '' file; do mv .'{$d} done

Который находит каталоги внутри. но застревает переименование файлов. Поэтому я выследил следующий сценарий.

источник

#!/bin/bash
cd
list=find `"path/to . " -type d`
    for directory in $list; do
    echo "directory=$directory"
    cd $directory
    imglist="ls | grep '\.png'"
    for file in $imglist; do
        mv home/
    done
    cd
done
#I didn't write either of these

Но это хорошо только для двух уровней.

Итак, как лучше сделать так, чтобы из беспорядочной файловой системы в один упрощенный каталог.

1 ответ

Если я правильно понимаю, следующее может помочь

bookroot='.' #the directory where are the chapters
final="./finalbook" #the destination

pages=( $(find "$bookroot"/[0-9]* -name \*.png -print | sed "s:$bookroot/::" | sort -t/ -k1n -k2n -k3n) )
for i in "${!pages[@]}"
do 
    echo cp "$bookroot/${pages[$i]}" "$final/$((i+1))_of_${#pages[@]}.png"
done

Это сухой ход. Если выполнено, удалите echo,

Другие вопросы по тегам