2016-01-05 9 views
1

Файловая система, представляющая книгу с каталогом, представляющим каждую главу и раздел каждой главы, где каждый файл страницы/.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

Не могли бы вы уточнить, что такое структура входных каталогов и как должен определяться вывод? Мне непонятно, почему '0/0/0' должен отображаться на' 1', а '2/1/3' должен отображаться на' 456'. Было бы полезно использовать пример меньшего масштаба. –

ответ

0

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

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.

Смежные вопросы