从文件系统

时间:2016-01-05 21:45:48

标签: bash filesystems organization

一个文件系统,代表一本书,其中一个目录代表每个章节和每个章节,其中每个页面/ .png文件在目录中作为第n章第q节的p页面。第一页将列为0/0/0但第456页可能是第三章,第二部分第4页从包含所有其他页面/ .png文件的目录中将其设置为2/1/3

bash脚本如何递归搜索每个目录并将相应的页面组织到右侧页面中,文件系统可以像book / pdf一样被读取?因此第1页(文件系统中的0/0/0)将位于新目录中,闪亮标签显示1或001,而页面/文件456(2/1/3)将显示为精彩456?< / p>

我发现了一些使用类似以下内容的类似问题

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)

如果我理解正确,以下内容可以提供帮助

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