Mover todos os arquivos de pastas aninhadas para outra pasta

1

Eu tenho uma hierarquia de pastas como esta:

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

E dentro de cada uma dessas dez pastas, eu tenho outras 10 pastas e assim por diante. No total, tenho 10 níveis.

Eu gostaria de mover TODOS os arquivos, incluindo TODAS as extensões possíveis (incluindo zip e rar) para uma pasta chamada FinalFolder.

Estou tentando usar o seguinte comando:

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

E está "trabalhando". No total, eu estou pegando 5k arquivos, mas eu sei que tenho 25k arquivos, então não está pegando tudo. Qual poderia ser o problema? E mais importante, como consertar isso?

    
por FXux 16.03.2016 / 17:24

1 resposta

0

Use um comando find mais simples para achatar o diretório de origem.

Alerta : verifique se o diretório de destino existe primeiro !! (ou você pode acabar com um arquivo chamado FinalFolder com apenas um de seus arquivos nele)

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

EDITAR

Isso pode sobrescrever arquivos se você tiver dois ou mais que tenham uma colisão de nomes. Se você quiser evitar que possa obter números de versão anexados usando o comando cp no lugar de mv . Isso tem o efeito colateral de que a árvore de diretórios original permanece intacta, portanto, talvez seja necessário excluí-la após o processamento.

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

Se isso continuar pedindo confirmação, provavelmente é porque o comando cp está com alias para cp -i . Nesse caso, use /bin/cp no lugar de cp

    
por 16.03.2016 / 20:56