Script unflat (#4798)

Added fix script to unflatten data w/o symlinking
This commit is contained in:
GlassedSilver
2021-05-15 09:58:56 +02:00
committed by GitHub
parent ffbf7f1ccf
commit 4cf62c520c

View File

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