Como mover todos os arquivos na pasta atual para a subpasta?

37

Estou no caminho:

/myuser/downloads/

E eu crio uma subpasta:

/myuser/downloads/new

Agora quero mover todos os arquivos e pastas / subpastas da pasta de downloads para a subpasta.

como posso fazer isso?

Eu tentei:

mv -R *.* new/

Mas o movimento não pega a opção -R, parece.

    
por Blankman 31.12.2011 / 13:38

4 respostas

69

O comando

mv !(new) new

deve fazer o truque. Se não funcionar, execute shopt -s extglob primeiro.

Para mover também arquivos / diretórios ocultos (que começam com um ponto), execute também shopt -s dotglob first.
Então, para resumir:

shopt -s extglob dotglob
mv !(new) new
shopt -u dotglob

(é sempre melhor desmarcar dotglob para evitar surpresas ruins).

    
por enzotib 31.12.2011 / 13:57
3

Descobri que algo como isso era um pouco mais simples, que pode funcionar bem para você:

ls | grep -v new | xargs mv -t new

Adicionando uma explicação para a solução acima:

De páginas man:

  • mv -t

    -t, --target-directory=DIRECTORY
          move all SOURCE arguments into DIRECTORY
    
  • grep -v

    -v, --invert-match
          Invert the sense of matching, to select non-matching lines.
    

Explicado por etapas:

  • ls listará os arquivos no diretório atual
  • grep -v new retornará canalizado para o que não é compatível com novo
  • xargs mv -t new moverá os arquivos canalizados para ele de grep -v para o diretório de destino
por lockwobr 01.09.2017 / 00:59
2

ideia simples. Assumindo que você está em / myuser , renomeie downloads para novo , crie um novo diretório downloads e então mova novo para ele.

mv downloads new # downloads is now called new
mkdir downloads # create new directory downloads
mv new downloads # move new into it.
    
por jpezz 05.09.2017 / 23:56
1

Se você quiser mover todos os arquivos de uma pasta para uma de suas subpastas, use o seguinte comando:

find /myuser/downloads/ -type d -name 'new' -prune -type f | xargs mv -t /myuser/downloads/new

Ele localizará todos os arquivos e os moverá para sua subpasta.

@waltinator: adicionou -type d -name 'new' -prune para impedir a passagem de /myuser/downloads/new .

    
por demian 13.10.2016 / 16:00

Tags