Supondo que as pastas da maior parte das folhas estejam em businessname/
ou businessname/sublocation
, você pode começar com as pastas aninhadas primeiro e depois prosseguir para os hotéis no mesmo nível que sublocation/
:
$ cd /tmp
$ rm -rf parent
$ mkdir -p parent/location/businessname/sublocation/hotelname1 \
parent/location/businessname/hotelname2
$ for depth in 2 1; do
find parent/location/businessname -mindepth $depth -type d -print0 \
| while read -d '' dir; do
echo "$dir"
mv "$dir" parent/ \
&& rmdir --ignore-fail-on-non-empty $(dirname "$dir")
done
done
$ find parent/
parent/
parent/hotelname2
parent/hotelname1
parent/location
Isso é um pouco hacky, pois tenta remover o diretório sublocation/
repetidamente (para cada hotel nele contido) até que esteja vazio.
Também não lida com colisões de nomes - moverá o primeiro hotel com um nome e deixará outros no lugar.