Shell Script HELP!

1. Shell Script HELP!

Lucas
LucasSantiago

(usa Linux Mint)

Enviado em 20/01/2012 - 12:30h

Pessoal boa tarde,
deixa eu explicar minha duvida, eu tenho um diretório com varios arquivos, sendo eles de varias extensões ex: .ABC .DEF .GHI, e dentro desse diretório tem pastas ABC, DEF , GHI.
Queria um script que listasse os arquivos e jogava dentro de suas devidas pastas. E o que não for "mensagem de erro".
Entenderam?
o que puderem me ajudar eu agradeço.

Obrigado.



  


2. Re: Shell Script HELP!

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 20/01/2012 - 12:41h

de uma lida
espero que ajude

http://aurelio.net/

é muito bom eu recomento
eu começei por lá

lê e vai construindo o script
qualquer duvida estamos ai


3. Re: Shell Script HELP!

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 20/01/2012 - 13:23h

Tente pelo menos iniciar o script e poste aqui o que vc já fez, assim vamos trabalhando sua idéia e te ajudando no que for preciso! :-)


4. Re: Shell Script HELP!

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 20/01/2012 - 13:28h

aqui tem um tópico com o título parecido com o seu, e a questão também, acredito que trechos dos scripts sejam uteis
http://vivaolinux.com.br/topico/Shell-Script/Bash-script-ajuda


5. ajuda..

Lucas
LucasSantiago

(usa Linux Mint)

Enviado em 20/01/2012 - 14:04h

Olha, comecei assim mais não sei como continuar...

#!/bin/bash

cd "/home/lucas/Alex"
for i in *.*
do
cat $i
if [$i -eq *.abc]
mv /home/lucas/Alex /home/lucas/Alex/ABC


tem 3 diferentes tipos de arquivos jogados em uma pasta que contem 3 pastas dentro dela com os nomes das extensões.
e o que não for igual o nome das pastas, exibo a mensagem de erro!



6. Re: Shell Script HELP!

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 21/01/2012 - 01:12h


#!/bin/bash

cd "/home/lucas/Alex"

# substitua abc def ghi por uma lista de formatos que queira buscar/organizar
for param in abc def ghi
do
# para cada arquivo encontrado, de acordo com o parâmetro fornecido, o comando abaixo vai buscá-lo e caso encontre irá movê-lo para seu diretório correspondente com o mesmo nome
find /home/lucas/Alex -type f -iname "*.$param" -exec mv {} "$param"/ \;
done




Montei o código acima, dê uma olhada, teste, e qualquer dúvida poste que ajudaremos....



7. Re: Shell Script HELP!

Lucas
LucasSantiago

(usa Linux Mint)

Enviado em 23/01/2012 - 12:11h

eu não consegui entender,
talvez posso até fazer uma substring também né ?




8. Re: Shell Script HELP!

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 23/01/2012 - 12:36h

Analise com calma veja que o find vai fazer uma busca a partir do diretório especificado e executará um comando, que fica entre

-exec ..... \;


o {} faz referência ao nome do arquivo encontrado pelo find.





9. olha

Lucas
LucasSantiago

(usa Linux Mint)

Enviado em 23/01/2012 - 12:40h

Olha como está, mais ainda nao consegui entender como vou fazer com que leia todos os arquivos de uma vez, e oq for igual o nome da pasta, ja mover para a pasta.
entendeu?
Olha como está !

#!/bin/bash

for i in "/home/lucas/Alex/*.*"
do

Arquivo=$i

Formato=

if [[ $Arquivo -eq $Formato ]]
then
echo "Moveu o arquivo $Arquivo para a pasta $Formato"
else
echo "Nao existe pasta"
fi

done

Minha duvida é no formato, como posso fazer?
;/



10. Re: Shell Script HELP!

André Gustavo Neves Lopes
andrelopes.mrx

(usa FreeBSD)

Enviado em 23/01/2012 - 18:38h

#!/bin/bash

# por partes para ficar legivel então:

# lista todas as extensoes
extensoes=$(ls *.* |awk -F . '{print $NF}' | sort -u)

for ext in $extensoes ; do

# para cada extensao encontrada, testar se o diretorio com o mesmo nome existe, e se sim, mover os arquivos para diretorio.

if [ -d $ext ] ; then
echo "mv *.$ext $ext"
else
echo "diretorio $ext nao encontrado"
fi
done


espero que ajude, abraço!

blog.mrx.com.br
[email protected]


11. Re: Shell Script HELP!

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 23/01/2012 - 22:37h


Olha como está, mais ainda nao consegui entender como vou fazer com que leia todos os arquivos de uma vez, e oq for igual o nome da pasta, ja mover para a pasta.
entendeu?



Eu não entendi tb o que você quer, pois o código que passei resolve seu problema:


#!/bin/bash

cd "/home/lucas/Alex"

# substitua abc def ghi por uma lista de formatos que queira buscar/organizar
for param in abc def ghi
do
# para cada arquivo encontrado, de acordo com o parâmetro fornecido, o comando abaixo vai buscá-lo e caso encontre irá movê-lo para seu diretório correspondente com o mesmo nome
find /home/lucas/Alex -type f -iname "*.$param" -exec mv {} "$param"/ \;
done



Agora se você quiser que o script que vc passou funcione, o do colega acima vai ajudar, só que ele só consegue buscar os arquivos dentro do diretório corrente e o find busca em todos a partir do diretório especificado.


como vou fazer com que leia todos os arquivos de uma vez..


Isso não tem como, pelo menos desconheço, o uso de vários comandos como o ls, ajudaria, mas o find já faz o trabalho complicado e bem mais rápido...


12. Re: Shell Script HELP!

André Gustavo Neves Lopes
andrelopes.mrx

(usa FreeBSD)

Enviado em 23/01/2012 - 23:49h

LucasSantiago escreveu:
Pessoal boa tarde,
deixa eu explicar minha duvida, eu tenho um diretório com varios arquivos, sendo eles de varias extensões ex: .ABC .DEF .GHI, e dentro desse diretório tem pastas ABC, DEF , GHI.
Queria um script que listasse os arquivos e jogava dentro de suas devidas pastas. E o que não for "mensagem de erro".
Entenderam?
o que puderem me ajudar eu agradeço.
Obrigado.


Então, o exemplo que eu escrevi, foi baseado nas premissas, do problema:
1) 1 diretorio, com varios arquivos (nada sobre subdiretorios)
2) varias extensoes, e o usuario não sabe todas

abraço!

blog.mrx.com.br
gtalk,msn,mail: [email protected]



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts