Commit | Line | Data |
---|---|---|
0f2a9bdd H |
1 | #!/bin/bash |
2 | #This script generates directory structure based on | |
3 | #Dewey Decimal System Categories list copypasted from wikipedia... | |
4 | #Generated directory structure can be converted to JSON tree for further use | |
5 | ||
6 | ddslist='dds.txt' | |
7 | ddsdir='./dds' | |
8 | ||
9 | rm -r "$ddsdir" | |
10 | ||
11 | dds_get_path() { | |
12 | for i in {1..3}; do | |
13 | id=$( | |
14 | echo -n "$1" | grep -Eo "[0-9]{$i}" | head -n 1; | |
15 | #echo 000 | grep -Eo "[0-9]{$(( 3-$i ))}" | head -n 1; | |
16 | ) | |
17 | zeros=000 | |
18 | echo "${id}${zeros:$i}"; | |
19 | done | |
20 | } | |
21 | ||
22 | dds_get_category() { | |
23 | cat dds.txt | grep ^"$1" | head -n "$2" | tail -n 1 | |
24 | } | |
25 | ||
26 | dds_get_category_name() { | |
27 | dds_get_category "$1" "$2" | cut -d ' ' -f 2- | grep -o '[a-zA-Z\[].*' | |
28 | } | |
29 | ||
30 | dds_add_category() { | |
31 | path="$2" | |
32 | level=1; | |
33 | dds_get_path "$1" | while read id; do | |
34 | name="$(dds_get_category_name "$id" "$level")"; | |
35 | path+="/$id - $name"; | |
36 | [ $level -eq 3 ] && { | |
37 | mkdir -p "$path"; | |
38 | echo "$path"; | |
39 | } | |
40 | level=$(( $level+1 )); | |
41 | done | |
42 | } | |
43 | ||
44 | time for i in {000..999}; do | |
45 | dds_add_category "$i" "$ddsdir"; | |
46 | done |