Você também pode usar a opção -mindepth :
find . -type f -mindepth 2 -exec mv -i -- {} . \;
(Juntamente com -maxdepth , você também pode limitar os níveis de hierarquia dos quais coletar os arquivos.)
Eu usei mv -i ("interativo") para fazer mv perguntar antes de sobrescrever arquivos. Com muitos subdiretórios, pode haver conflitos de nome nos quais você gostaria de ser avisado.
A opção -- interrompe o processamento da opção, portanto, mv não se confunde com nomes de arquivos que começam com um hífen.
Limpe todo o grupo de subdiretórios vazios com
find . -depth -mindepth 1 -type d -empty -exec rmdir {} \;