Spostare tutti i file delle cartelle nidificate in un'altra cartella

Ho una gerarchia di cartelle come questa:

MainFolder | | - 01 | - 02 | - 03 | - 04 | - 05 | - 06 | - 07 | - 08 | - 09 | - 10 

E dentro ciascuna di queste dieci cartelle, ho altre 10 cartelle, e così via. In totale, ho 10 livelli.

Vorrei spostare tutti i file, tra cui tutte le possibili estensioni (tra cui zip e rar) in una cartella chiamata FinalFolder.

Sto cercando di utilizzare il seguente command:

 find MainFolder -type f -print0 | xargs -0 mv -t FinalFolder 

E sta "lavorando". In totale, sto catturando 5k file, ma so che ho 25k file, quindi non è catturare tutti. Quale potrebbe essere il problema? E ancora più importnte, come risolverlo?

Utilizzare un command di ricerca più semplice per appiattire la directory di origine.

Avviso : Assicurarsi che la directory di destinazione esista per primo !! (o si potrebbe finire con un file denominato FinalFolder con solo uno dei file in esso)

  find MainFolder -type f -exec mv \{\} FinalFolder \; 

EDIT

Questo può sovrascrivere i file se si dispone di due o più che hanno una collisione di nomi. Se si desidera evitare di get i numbers di versione aggiunti utilizzando il command cp in sostituzione di mv . Questo ha l'effetto collaterale che l'tree di directory originale rimane intatto, quindi potrebbe essere necessario andare e cancellarlo dopo l'elaborazione.

  find MainFolder -type f -exec cp --backup=numbered \{\} FinalFolder \; 

Se ciò continua a richiedere conferma, probabilmente è dovuto al command cp viene aliasato a cp -i . In questo caso utilizzare /bin/cp al posto di cp