69 lines
2.6 KiB
Bash
69 lines
2.6 KiB
Bash
#! /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"
|