| 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 |