diff --git a/script/fixes/078_unflat.sh b/script/fixes/078_unflat.sh new file mode 100644 index 000000000..94ade0239 --- /dev/null +++ b/script/fixes/078_unflat.sh @@ -0,0 +1,68 @@ +#! /bin/bash +# unflat - Hierarchical Arrangement Script for the danbooru data folder +# Version 1 +# (hopefully the only one OwO) +# +# Author: Glassed Silver + +# Welcoming the user and disclaimer +printf "\nunflat - Hierarchical Arrangement Script for the danbooru data folder +Version 1 +Author: Glassed Silver + +This is a shell script and the methodical alternative to the fix script 77, +only that this script doesn't intend to create any symlinks, +but rather move all files in the root data folder and its sub- +directories crop, sample and preview to the non-flat, hierarchical +file structure, that is now the only way danbooru stores files +going forward. + + IMPORTANT: MAKE SURE YOU BACKED UP YOUR + /home/danbooru/danbooru/public/data folder + and that you run this script as the danbooru user! + I take no responsibility for anything that gets borked + or breaks from this, so be cautious! Run this INSTEAD of 077_symlink_subdirectories.rb!\n\n\n" + +# Prompt to continue +read -p "Press enter to continue (ctrl+c to cancel)" +printf "\nPreparing... \n" + +cd ~/danbooru/public/data/ +mkdir ../data-processing +mv * ../data-processing/ && mkdir original +mv ../data-processing/crop crop/ +mv ../data-processing/sample sample/ +mv ../data-processing/preview preview/ +cd ../data-processing/ + +printf "Beginning now \n +Stage 1 - ~/danbooru/public/data/ (originals are in original/ going forward) \n" + +for f in *; do if [ ! -d "$f" ]; then d="${f:0:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done +for dir in ./*; do (cd "$dir" && for f in *; do if [ ! -d "$f" ]; then d="${f:2:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done); done +cd .. +mv data-processing/* data/original/ && rmdir data-processing +cd data/ + +printf "Stage 2 - ~/danbooru/public/data/crop \n" + +cd crop/ +for f in *; do if [ ! -d "$f" ]; then d="${f:0:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done +for dir in ./*; do (cd "$dir" && for f in *; do if [ ! -d "$f" ]; then d="${f:2:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done); done +cd .. + +printf "Stage 3 - ~/danbooru/public/data/preview \n" + +cd preview/ +for f in *; do if [ ! -d "$f" ]; then d="${f:0:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done +for dir in ./*; do (cd "$dir" && for f in *; do if [ ! -d "$f" ]; then d="${f:2:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done); done +cd .. + +printf "Stage 4 - ~/danbooru/public/data/sample \n\n" + +cd sample/ +for f in *; do if [ ! -d "$f" ]; then d="${f:7:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done +for dir in ./*; do (cd "$dir" && for f in *; do if [ ! -d "$f" ]; then d="${f:9:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; fi; done); done +cd .. + +printf "DONE \nEnjoy your day! :) \n\n"