Questão Como faço para mover todos os arquivos de uma pasta para outra usando a linha de comando?


Eu gostaria de saber como eu poderia mover todos os arquivos de uma pasta para outra pasta com uma linha de comando.

Digamos que eu esteja na pasta Downloads e haja 100 arquivos que eu gostaria de mover para minha pasta Vídeos, sem precisar escrever o nome de todos os arquivos.


167
2017-08-06 15:14


origem


Você está perguntando sobre a mudança files mas as pessoas te mostrando como se mover não só files mas folderstambém. Tudo bem? - Askar


Respostas:


Abra um terminal e execute este comando:

mv  -v ~/Downloads/* ~/Videos/

Ele moverá todos os arquivos e pastas da pasta Downloads para a pasta Vídeos.


Para mover todos os arquivos, mas não as pastas: 

Se você estiver interessado em mover todos os arquivos (mas não as pastas) da pasta Downloads para a pasta Vídeos, use este comando

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

Para mover apenas arquivos das pastas de download, mas não de subpastas:

Se você quiser mover todos os arquivos da pasta Downloads, mas não os arquivos nas pastas da pasta Download, use este comando:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

Aqui, -maxdepth opção especifica como a localização profunda deve tentar 1 significa, apenas o diretório especificado no comando find. Você pode tentar usar 2, 3 também para testar.

Veja o Ubuntu encontrar manpage para uma explicação detalhada


235
2017-08-06 15:18



você pode usar o mv sozinho para mover um diretório inteiro para outra pasta: mv folder ~ / Documents - JohnMerlino
FYI Eu acredito que seu primeiro comando ("mv -v ~ / Downloads / * ~ / Videos /") não vai mover arquivos de pontos. - Mark Doliner
Sim, não moverá os arquivos. - Anwar
Nb seu -print0 | xargs -0 mv -t ~/Videos pode ser mais eficientemente feito com -exec mv -t ~/Videos \{\} \+ :-) - artfulrobot
Sim, é verdade. Eu era novato, então quando eu respondi a pergunta - Anwar


mv ~/Downloads/* ~/Videos

Ele irá mover todos os arquivos, incluindo subpastas, no diretório que você deseja mv. Se você quiser cp (cópia) ou rm (remover) você precisará do -r (recursiva) para incluir subpastas.


17
2017-12-08 03:24



Meu comando mv não tem uma opção -R (Ubuntu 14.04). - Mark Doliner
@ MarkDoliner, sim mv não precisa de opção recursiva para incluir subpastas. Pode-se usar também para renomear. - AliNâ
Eu não precisei *. A mesma coisa aconteceu sem usar a estrela. - MycrofD
O ~ / no prefixo dos nomes das pastas nem sempre funciona (não funciona no bash e git pelo menos) - Krish Munot
Esta solução dará um erro se o diretório de origem estiver vazio. - Pierre Thibault


É possível usar rsync, por exemplo:

rsync -vau --remove-source-files src/ dst/

Onde:

-v, --verbose: Aumentar a verbosidade.

-a, --archive: Modo de arquivo; é igual a -rlptgoD (não -H, -A, -X).

-u, --update: Ignore os arquivos que são mais recentes no receptor.

--remove-source-files        Isso diz ao rsync para remover do lado de envio os arquivos (que não são diretórios) que fazem parte da transferência e foram duplicados com sucesso no lado de recebimento.

Se você tem privilégios de root, prefixo com sudo para anular possíveis problemas de permissão.


5
2018-06-06 15:08



ATENÇÃO! a opção --delete-after, como notado, não funciona da maneira esperada. Não elimina o fonte arquivos após cópia bem sucedida ... DELETA TODOS OS ARQUIVOS / OUTROS ARQUIVOS NO DESTINO. (como @kenorb observou ... mas eu não li com cuidado o suficiente! DOH) - Jay Marm


Usar

mv -v ~/rootfolder/branch/* ~/rootfolder

Eu espero que isso ajude. Porque eu tive a mesma dor e perdi muito tempo consertando meu erro.


2
2018-01-25 23:06





Para o caso simples:

mv ~/Downloads/* ~/Videos

Se você quiser mover arquivos de ponto também, defina dotglob opção shell.

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Isso deixa o conjunto de opções do shell.

Por um tempo uso dotglob, execute os comandos em um subshell:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

2
2018-01-22 10:16





  1. Vá para a linha de comando e entre no diretório para o qual deseja movê-lo cd folderNamehere
  2. Tipo pwd. Isto irá imprimir o diretório que você deseja mover também.
  3. Em seguida, mude para o diretório onde todos os arquivos estão com cd folderNamehere
  4. Agora, para mover todo o tipo de arquivos mv *.* typeAnswerFromStep2here

Isso moverá todos os arquivos desse diretório para o outro.


1
2017-09-12 12:07



Isso não corresponderá aos arquivos sem nenhuma extensão. por exemplo, se uma pasta tiver os arquivos: foo.txt, bar. e bar ambos bar. e bar não será movido. Usando * ao invés de *.* cuida disso. Mas em ambos os casos, arquivos ocultos como: .foobar não será movido. - Dan


Para mover um diretório com ou sem conteúdo para o novo nome da mesma forma como você usaria o mv comando para renomear um arquivo:

mv -T dir1 dir2

Onde:

  • -T trata o destino como um arquivo normal
  • dir1 é o nome original do diretório
  • dir2 é o novo nome do diretório

NB: dir2 não precisa existir.

Espero que isso poupe muito tempo, como noob, antes disso, criaria um diretório com o novo nome e depois moveria o conteúdo do diretório para o diretório criado anteriormente.

Use para subdiretórios

Este comando é útil quando muitos arquivos foram salvos em uma subpasta do diretório de destino, ou seja, Downloads/mp4. Neste exemplo, executando mv -T Downloads/mp4 Videos vai resultar em mp4 subpasta sendo removido e todos os arquivos contidos dentro são movidos para a pasta Vídeos.


0
2017-12-09 07:33



+1 porque testado trabalhando no Xubuntu 14.04. Eu adicionei um exemplo nesta resposta para mostrar que este comando fará com que o dir1 para ser removido. Além desta precaução, esta resposta notou algo bom para o uso diário. - clearkimura
"Para mover um diretório com ou sem conteúdo para seu novo nome" Como você pode mover um diretório ... para um nome? Isso não faz sentido. "-T trata o destino como um arquivo normal" Como um destino pode ser um arquivo? Você quer dizer diretório? - Monica Heddneck
É como renomear um arquivo para seu novo nome como você faria com algo como mv fileA fileB mas o -T sinalizador neste caso trata o destino / diretório como um arquivo e o renomeia. - Feyisayo Sonubi


tente

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-tipo com o argumento -tipo você pode especificar o tipo file.on esta declaração que é o arquivo mean.if usando -d significa diretório.

-iname: O método mais comum e óbvio para procurar por um arquivo é usar seu argumento -name. Se você não tem certeza sobre sua diferenciação de maiúsculas e minúsculas, você pode usar o argumento -iname

mv {} e, finalmente, para especificar o diretório de destino e, em seguida, mover os arquivos para lá usando o argumento mv {}


0
2018-04-01 16:54