Vá para o diretório de nível superior da árvore que contém os arquivos zip ( cd … ) e, em seguida, execute
mv **/*.zip /path/to/single/target/directory
Isso funciona fora da caixa em zsh. Se seu shell é bash, você precisará executar shopt -s globstar primeiro (você pode e deve colocar este comando em seu ~/.bashrc ). Se seu shell for ksh, você precisará executar set -o globstar primeiro (coloque-o em ~/.kshrc ).
Como alternativa, use find , que funciona em qualquer lugar, sem preparação especial, mas é mais complicado:
find . -name '*.zip' -exec mv {} /path/to/single/target/directory \;
Se você quiser remover diretórios vazios depois, em zsh:
rmdir **/*(/^Fod)
No bash ou ksh:
rmdir **/*/
e repita enquanto houver diretórios vazios para remover. Alternativamente, em qualquer casca
find . -depth -type d -empty -exec rmdir {} \;