Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

1. Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Vitor Coelho
vitorcoelho

(usa elementary OS)

Enviado em 31/07/2014 - 10:23h

Bom dia povo.
Tenho VARIAS pastas com arquivos de variadas extensões dentro de cada uma. Preciso mover apenas as imagens com extensão .jpg e .png. Exist eu um parametro pra isso?

Caso não tenha entendido:
Atual: /home/Desktop/back/(mais de 200 pastas com varios tipos de arquivos)
Objetivo: /home/Desktop/back/png/(todos os arquivos png que estavam nas pastas dentro do /back/

*Se houver alguma parametro para prefixo, todas as pastas começam 'recup_dir'

Pode ser tanto com 'mv' quanto com 'cp'. Funcionando está otimo :D


  


2. MELHOR RESPOSTA

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 31/07/2014 - 13:14h

vitorcoelho escreveu:

Primeiros meses com linux. Como crio esse script?


Depende, se vc for reutilizar esse script, vale a pena guardar ele. Você só precisa criar um arquivo, com um nome aleatório, como movearquivos.sh por exemplo e nele vc guarda esse código que eu te passei. Daí vc dá permissão de execução pra ele com o comando:


chmod u+x movearquivos.sh


E depois executa ele:


./movearquivos.sh


Mas se vc só quiser executar isso agora, sem guardar, vc pode condensar esses comandos em um só, basta executar no terminal:


for arquivo in `find /home/Desktop/back/ -name *.png`; do mv "$arquivo" /home/Desktop/back/png/; done;


3. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Ribeiro, M.S.
ribeirosga

(usa Ubuntu)

Enviado em 31/07/2014 - 11:58h

Caro vitorcoelho, já dentro da pasta "back" e considerando que a pasta "png" já exista: mv *.png png/
Faça o mesmo com as jpg's.

Abraço.


4. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 31/07/2014 - 12:03h

Se todos estivessem numa mesma pasta, bastaria usar o comando:


mv *.png /home/Desktop/back/png


Mas se estiverem espalhados em várias pastas, então vc precisaria usar um pequeno script:


for arquivo in `find /home/Desktop/back/ -name *.png`;
do mv "$arquivo" /home/Desktop/back/png/;
done;



5. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Vitor Coelho
vitorcoelho

(usa elementary OS)

Enviado em 31/07/2014 - 12:15h

ribeirosga escreveu:
Caro vitorcoelho, já dentro da pasta "back" e considerando que a pasta "png" já exista: mv *.png png/
Faça o mesmo com as jpg's.
Abraço.

Mesmo resultado que tive:

mv: cannot stat ‘*.png’: No such file or directory

:/

hrcerq escreveu:
Se todos estivessem numa mesma pasta, bastaria usar o comando:

mv *.png /home/Desktop/back/png

Mas se estiverem espalhados em várias pastas, então vc precisaria usar um pequeno script:

for arquivo in `find /home/Desktop/back/ -name *.png`;
do mv "$arquivo" /home/Desktop/back/png/;
done;

Primeiros meses com linux. Como crio esse script?


6. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Ribeiro, M.S.
ribeirosga

(usa Ubuntu)

Enviado em 31/07/2014 - 12:21h

vitorcoelho escreveu:

mv: cannot stat ‘*.png’: No such file or directory



Eh que nesse caso não tem nenhum arquivo .png dentro da pasta que vc executou o comando.

Pra ficar melhor faz assim: mv /home/Desktop/back/*.png /home/Desktop/back/png/

Se tiver algum arquivo ".png" dentro da pasta "back" e considerando que a pasta "png" já exista com ctz vai dar certo.

Se tiver dentro de várias pasta faz a segunda dica do vitorcoelho.





7. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/07/2014 - 13:25h

Você pode fazer o seguinte:


1. Vá para a pasta /home/Desktop/back, pelo terminal (que é onde estão as várias pastas com os vários arquivos);

2. Se você ainda não criou a pasta "png", crie ela agora usando o comando mkdir;

3. Finalmente, rode o comando abaixo:


mv ./recup_dir*/*.png ./png


(isso vai mover todos os arquivos .png de todas as pastas do diretório /home/Desktop/back para a pasta "png")


8. [RESOLVIDO!]

Vitor Coelho
vitorcoelho

(usa elementary OS)

Enviado em 31/07/2014 - 16:02h

hrcerq escreveu:
Depende, se vc for reutilizar esse script, vale a pena guardar ele. Você só precisa criar um arquivo, com um nome aleatório, como movearquivos.sh por exemplo e nele vc guarda esse código que eu te passei. Daí vc dá permissão de execução pra ele com o comando:


chmod u+x movearquivos.sh


E depois executa ele:


./movearquivos.sh


Mas se vc só quiser executar isso agora, sem guardar, vc pode condensar esses comandos em um só, basta executar no terminal:


for arquivo in `find /home/Desktop/back/ -name *.png`; do mv "$arquivo" /home/Desktop/back/png/; done;


Works! Muito obrigado hrcerq!


9. bash: erro de sintaxe próximo do `token' não esperado `mv'

Brendon Hudson Cardoso
brendonhc

(usa Debian)

Enviado em 24/01/2017 - 23:28h

hrcerq escreveu:

vitorcoelho escreveu:

Primeiros meses com linux. Como crio esse script?


Depende, se vc for reutilizar esse script, vale a pena guardar ele. Você só precisa criar um arquivo, com um nome aleatório, como movearquivos.sh por exemplo e nele vc guarda esse código que eu te passei. Daí vc dá permissão de execução pra ele com o comando:


chmod u+x movearquivos.sh


E depois executa ele:


./movearquivos.sh


Mas se vc só quiser executar isso agora, sem guardar, vc pode condensar esses comandos em um só, basta executar no terminal:


for arquivo in `find /home/Desktop/back/ -name *.png`; do mv "$arquivo" /home/Desktop/back/png/; done;


É a minha esperança pra não abrir milhares de pastas com milhares de arquivos de diferentes extensões para encontrar meia duzia de JPG's... Reza a lenda que é só mandar pro terminal...

Tenho alguns meses de linux também, estou sedento pra aprender logo shell e destruir em tudo isso, mas ainda não sei nada rsrs
Modifiquei ele para minhas necessidades e ele ficou assim:

for arquivo in 'find /media/zorin/291B-8FC8/Rec/ -name *.jpg'; mv "$arquivo" /media/zorin/291B-8FC8/Rec/JPG/; done; 


Porém só obtenho essa resposta:
bash: erro de sintaxe próximo do `token' não esperado `mv'

E agora? help... Obs: Estou em live cd do Zorin OS...
Grato desde já!

---------------------------------------------------------------------------
Processador: Intel® Core™ i3-3220 CPU @ 3.30GHz × 4
Memória: 3,8 GiB
Gráficos: Gallium 0.4 on NVC1 (GT 430)
Sistema: Ubuntu 16.04 LTS 64-bit


10. Re: Mover arquivos de mesma extensão dentro de diretorios [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 27/01/2017 - 08:42h

brendonhc escreveu:

hrcerq escreveu:

vitorcoelho escreveu:

Primeiros meses com linux. Como crio esse script?


Depende, se vc for reutilizar esse script, vale a pena guardar ele. Você só precisa criar um arquivo, com um nome aleatório, como movearquivos.sh por exemplo e nele vc guarda esse código que eu te passei. Daí vc dá permissão de execução pra ele com o comando:


chmod u+x movearquivos.sh


E depois executa ele:


./movearquivos.sh


Mas se vc só quiser executar isso agora, sem guardar, vc pode condensar esses comandos em um só, basta executar no terminal:


for arquivo in `find /home/Desktop/back/ -name *.png`; do mv "$arquivo" /home/Desktop/back/png/; done;


É a minha esperança pra não abrir milhares de pastas com milhares de arquivos de diferentes extensões para encontrar meia duzia de JPG's... Reza a lenda que é só mandar pro terminal...

Tenho alguns meses de linux também, estou sedento pra aprender logo shell e destruir em tudo isso, mas ainda não sei nada rsrs
Modifiquei ele para minhas necessidades e ele ficou assim:

for arquivo in 'find /media/zorin/291B-8FC8/Rec/ -name *.jpg'; mv "$arquivo" /media/zorin/291B-8FC8/Rec/JPG/; done; 


Porém só obtenho essa resposta:
bash: erro de sintaxe próximo do `token' não esperado `mv'

E agora? help... Obs: Estou em live cd do Zorin OS...
Grato desde já!

---------------------------------------------------------------------------
Processador: Intel® Core™ i3-3220 CPU @ 3.30GHz × 4
Memória: 3,8 GiB
Gráficos: Gallium 0.4 on NVC1 (GT 430)
Sistema: Ubuntu 16.04 LTS 64-bit


Bom dia!

Basta fzer uma pequena modificação no seu código. Faltou incluir o comando "do" antes do "mv". Logo, o código deve ficar assim:

for arquivo in 'find /media/zorin/291B-8FC8/Rec/ -name *.jpg'; do mv "$arquivo" /media/zorin/291B-8FC8/Rec/JPG/; done; 


---

Atenciosamente,
Hugo Cerqueira






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts