Para fazer isso, 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:
Porém, 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 das subpastas:
Se você deseja mover todos os arquivos da pasta Downloads, mas não arquivos dentro das pastas da pasta Download, use este comando:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
aqui, a -maxdepth
opção especifica o quão profundo o find deve tentar,
1
significa apenas o diretório especificado no comando find. Você pode tentar usar 2
, 3
também para teste.
Veja a página de manual do Ubuntu para uma explicação detalhada.
Solução
O comando encontrará todos os arquivos regulares em
/src/dir
(incluindo todos os subdiretórios) e os moverá para o/dst/dir
uso do comandomv
. Apenas substitua os diretórios pelos seus. Arquivos com os mesmos nomes serão renomeados automaticamente.Selecionando arquivos para mover
Se você deseja mover apenas arquivos MP3, adicione a
-iname "*.mp3"
opção aofind
comando depois-type f
.Comparação com a resposta de c0dev
Somente o segundo comando na resposta do c0dev responde à pergunta. Abaixo está como ele se compara a esta resposta. Os pontos 3. e 4. podem ser resolvidos na outra resposta da mesma maneira que aqui.
mv
a solução com-exec +
não precisa chamar um comando adicional comoxargs
ouparallel
e entregar os nomes dos arquivos duas vezes.--backup=numbered
. Infelizmente, esses backups com sufixo like~3~
estarão ocultos na maioria dos arquivos gerenciados por padrão. Infelizmentemv
, não permite a alteração do sufixo, mas pode ser facilmente pós-processado por comandos adicionais. Esta é uma extensão GNU.-print0
-exec command {} +
faz parte dos padrões IEEE Std 1003.1 (POSIX), ISO / IEC 9945 e The Single UNIX Specification. Assim, deve ser mais portátil. Consulte IEEE Std 1003.1, edição de 2004 , IEEE Std 1003.1, edição de 2013 e 0000243: adicione -print0 para "localizar" . De qualquer forma, a-t
opção necessáriamv
é uma extensão GNU, portanto, todo o comando não é portátil entre os sistemas POSIX.Nota: No caso
find
seria capaz de produzir caminhos começando com-
(Eu não sei de qualquer implementação defind
no momento.) O{}
deve ser precedido pelo indicador de fim de opções:--
.fonte
{}
deve ser o último argumento. Corrigido.Infelizmente, não tenho uma reputação suficientemente alta para comentar sobre a solução marcada. No entanto, eu queria alertar outras pessoas sobre um problema que encontrei. É bem amador; no entanto, quando você está fazendo várias coisas, pode não vir à mente a princípio. Espero que ajude os outros.
Problema
Variações da seguinte mensagem foram fornecidas após o início do comando. O comando cria vários arquivos.
Causa
O
/src
é um pai de/dst
(por exemplo/src/../dst/
).Solução
Embora possa haver uma solução melhor, simplesmente movi os arquivos para um diretório temporário fora do meu
/src
e, em seguida, executei novamente o comando para colocá-los novamente no/src/../dst
diretório em que eu queria que eles terminassem.fonte
Meu one-liner - isso funciona em Macs, mas também deve funcionar em qualquer * nix. Comece no diretório pai.
A primeira parte move tudo, de todas as subpastas para a pasta real, de onde você inicia o comando; a segunda parte verifica se os subdiretórios estão vazios (eles devem agora :-) e os exclui para que você obtenha tudo aqui sem subdiretórios.
fonte
-not
operador não é padrão, portanto, seu comando é menos portátil que os outros.Abra o terminal, CD para a sua pasta de pastas com arquivos e execute
find . -mindepth 2 -type f -print -exec mv {} . \;
para mover todos os arquivos desses subdiretórios para o atual.fonte