shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Distribuir arquivos pelo disco


From: Julio C. Neves
Subject: Re: [shell-script] Distribuir arquivos pelo disco
Date: Wed, 18 Jul 2007 09:58:18 -0300

Sendo bash, isso aqui funciona para vc:

#!/bin/bash
IFS=_
for nomeoriginal in $(ls -l /shares/comunicados); do
    read setor nomearquivo <<< $nomeoriginal
    mv /shares/comunicados/$nomeoriginal /shares/setores/$setor/$nomearquivo
done

Veja o teste:
$ IFS=_
$ read primeiro segundo terceiro <<< Papo_de_Botequim
$ echo $primeiro
Papo
$ echo $segundo
de
$ echo $terceiro
Botequim

Abração,
Julio


Em 17/07/07, frsamp <address@hidden> escreveu:
>
>   Olá a todos os amigos da lista.
>
> Estou tentando fazer um script que pegue cada arquivo de uma
> determinada pasta, e distribua-o por outras pastas do disco, de
> acordo com uma regra pré-estabelecida com meus usuários: No início do
> arquivo, incluir as 3 letras do código do setor e um "_". Assim,
> aquele arquivo que tem como destino aquele setor, poderia ser
> distribuído pelo próprio shell. Fiz + ou - assim (na verdade ele é
> maior, mas isso não seria relevante diante do problema que vou
> apresentar):
>
> #!/bin/bash
> for nomeoriginal in $(ls -l /shares/comunicados); do
> setor=`echo $nomeoriginal | cut -f1 -d"_"`
> nomearquivo=`echo $nomeoriginal | cut -f2 -d"_"`
> mv /shares/comunicados/$nomeoriginal /shares/setores/$setor/
> $nomearquivo
> done
>
> Assim, se um setor se chama "sti", basta para o usuário colocar na
> pasta /shares/comunicados o arquivo "sti_XPTOZD" e o script move o
> arquivo para /shares/setores/sti/XPTOZD. Tudo muito bom, tudo muito
> bem... Mas se o danado do arquivo tem espaço no nome, tudo pára de
> funcionar! Para depurar o problema, fiz as seguintes alterações no
> script acima:
>
> #!/bin/bash
> for nomeoriginal in $(ls -l /shares/comunicados); do
> echo $nomeoriginal
> # setor=`echo $nomeoriginal | cut -f1 -d"_"`
> # nomearquivo=`echo $nomeoriginal | cut -f2 -d"_"`
> # mv /shares/comunicados/$nomeoriginal /shares/setores/$setor/
> $nomearquivo
> done
>
> E o resultado da execução do script fica assim:
> sti_Novo
> Documento
> de
> texto.txt
>
> Tendo como único arquivo na pasta /shares/comunicados o arquivo
> sti_Novo Documento de texto.txt. Dessa forma, ele tenta processar
> cada loop do for com sti_Novo, Documento,... Alguém pode me dar uma
> luz, ou eu apanho, dizendo para meus usuários que eles não podem
> colocar espaço nem "_" (separador de campo) no nome do arquivo.
> SOCORRO!
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]