Script unflat (#4798)
Added fix script to unflatten data w/o symlinking
This commit is contained in:
68
script/fixes/078_unflat.sh
Normal file
68
script/fixes/078_unflat.sh
Normal 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"
|
||||
Reference in New Issue
Block a user