# echo 20150429 | sed -e 's/\(.\{4\}\)\(.\{2\}\)/\1\/\2\//' 2015/04/29
Start with a single flat directory with thousands of log files…
# ls | head -5 db301.20140216.log.gz db301.20140217.log.gz db301.20140218.log.gz db301.20140219.log.gz db301.20140220.log.gz
Now move timestamped files into sorted directory by day
# for i in `ls`; do j=$(echo $i| cut -d . -f 2 | sed -e 's/\(.\{4\}\)\(.\{2\}\)/\1\/\2\//'); mkdir -p $j && mv $i $j; done;
check your work
# find . -type f | head -5 ./2014/02/16/db301.20140216.log.gz ./2014/02/17/db301.20140217.log.gz ./2014/02/18/db301.20140218.log.gz ./2014/02/19/db301.20140219.log.gz ./2014/02/20/db301.20140220.log.gz
forgot to rename files
# for i in `find . -mindepth 3 -type d `; do pushd $i; for j in `ls`; do k=$(echo $j | sed -e 's/\(\.[0-9]\{8\}\)//' ); mv $j $k;done; popd; done;
check your work
# find . -type f | head -5 ./2014/02/16/db301.log.gz ./2014/02/17/db301.log.gz ./2014/02/18/db301.log.gz ./2014/02/19/db301.log.gz ./2014/02/20/db301.log.gz