Como faço para mover todos os diretórios para um único diretório eficientemente na mesma pasta?

5

Eu tenho 100 arquivos em uma única pasta, incluindo uma pasta chamada "target". Eu quero migrar todos os arquivos desta pasta para o destino da pasta (exceto para a própria pasta de destino).

Existe um comando de terminal eficiente para fazer isso?

    
por David Faux 29.03.2012 / 02:41

3 respostas

9

Se houver apenas os arquivos (e o diretório alvo) em seu diretório, basta usar mv , em vez de find :

mv * target

Ele reclamará que o "alvo" não pode ser movido por si mesmo, mas os arquivos estarão todos no alvo depois.

    
por ohno 29.03.2012 / 03:03
2

Isso também funciona:

find . -maxdepth 1 ! -name target ! -name . -exec mv "{}" target \;

Uma das principais vantagens do find em confiar na conclusão do bash é que você obtém os arquivos ocultos ao mesmo tempo. mv * ... não fará isso.

Você poderia, talvez, ir com algo como:

mv -t target * .[^.]*

Ou, como James aponta, você pode cortar o comando "Localizar" apenas para ver os arquivos ... E como LoremIpsum apontou se há bilhões deles, usar xargs seria um pouco mais eficiente:

find . -maxdepth 1 -type f -print0 | xargs -0 mv -t target
    
por Oli 29.03.2012 / 02:47
1

Use isso

$ mv target ..
$ mv * ../target
$ mv ../target .
    
por G. He 04.04.2012 / 03:50