for dir in /A/*; do
find "$dir" -mindepth 2 -depth -type d -exec mv -t "$dir" -- {} \;
done
Isso instrui find
a procurar por todos os diretórios ( -type d
) pelo menos dois níveis abaixo ( -mindepth 2
) $dir
depth-first ( -depth
). Para cada objeto, ele encontra mv -t "$dir" -- <SRC>
. Como sempre, mv
não permite que você mescle um diretório de origem em um diretório de destino existente (mas há maneiras de contornar isso).
Você também pode evitar a execução de uma instância individual de mv
para cada diretório de origem:
[...] -exec mv -t "$dir" -- {} +