Como mover todos os arquivos de subdiretórios para outro diretório

0

Meus arquivos têm a seguinte estrutura:

11
--11a
-----a.jpg
-----b.jpg
-----....
--11b
-----d.jpg
-----g.jpg
...

Eu quero ter todos os arquivos .jpg em uma pasta :

11
-a.jpg
-b.jpg
-d.jpg
-g.jpg
...

Basicamente eu tenho subpastas com muitos arquivos .jpg e quero mover todos eles para um diretório (por exemplo, pai).

Eu tentei: mv */*.jpg all , mas recebo -bash: /bin/mv: Argument list too long .

Algumas postagens sugerem xargs e algumas outras encontre solução, mas infelizmente nada parece estar funcionando para mim.

    
por Menelaos Kotsollaris 07.10.2016 / 00:57

2 respostas

0

Se os nomes dos arquivos forem exclusivos, use:

find {base folder}/11 -name "*.jpg" -exec mv {} {base folder}/11/ \;

onde {base folder} é onde reside o diretório 11 .

Isso executa o comando mv em cada arquivo: será muito mais lento do que mover todos os arquivos em um único comando mv , mas não haverá restrições quanto ao tamanho da lista de argumentos. / p>

Se alguns dos nomes de arquivos puderem estar em maiúsculas, você poderá usar -iname em vez de -name . Você também pode adicionar -n para certificar-se de não sobrescrever um arquivo que já foi movido (você precisa verificar se o mv tem essa opção - se não usar -i , embora isso possa gerar conflitos).

Você pode se livrar de qualquer diretório vazio com:

rmdir {base folder}/11/*

Você precisará investigar quaisquer diretórios que permaneçam após esse comando.

    
por 07.10.2016 / 02:08
-1

Isso deve ser tão fácil quanto "mv / .your_extension ./"

    
por 09.09.2018 / 07:30