Lembre-se de que isso copiará também pastas contendo apenas pastas, e não apenas pastas contendo pelo menos um arquivo. Não tenho certeza se é exatamente isso que você está procurando; em qualquer caso eu vou deixar isso no caso de ser útil para outra pessoa.
Usando find :
find source -mindepth 2 -maxdepth 2 -type d -not -empty -exec mv {} target \;
-
source: pesquisas emsource/ -
-mindepth 2: pesquisas iniciando no segundo nível da hierarquia de diretórios especificada -
-maxdepth 2: pesquisas parando no segundo nível da hierarquia de diretórios especificada -
-type d: pesquisa apenas por diretórios -
-not: nega a seguinte condição / ação -
-empty: pesquisa apenas por pastas vazias -
-exec [...]: para cada resultado, executa o seguinte comando -
mv {} target \;: move cada resultado paratarget/
user@debian ~/tmp % tree
.
├── source
│ ├── folder A
│ │ └── folder A
│ │ ├── file1
│ │ ├── file2
│ │ └── file3
│ └── folder B
│ └── folder B
└── target
6 directories, 3 files
user@debian ~/tmp % find source -mindepth 2 -maxdepth 2 -type d -not -empty -exec mv {} target \;
user@debian ~/tmp % tree
.
├── source
│ ├── folder A
│ └── folder B
│ └── folder B
└── target
└── folder A
├── file1
├── file2
└── file3
6 directories, 3 files