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: Edjunior Machado
Subject: Re: [shell-script] Distribuir arquivos pelo disco
Date: Tue, 17 Jul 2007 17:12:35 -0300

hey,

novamente, daria pra usar substituição de parâmetros em bash né?

exemplo:

emachado@emachado ~/temp $ ls
bla_Novo texto_novo.txt  sti_Novo Documento de texto.txt
emachado@emachado ~/temp $ for i in *; do echo "prefixo ${i/_*/}";
echo "sufixo ${i#*_}"; done
prefixo bla
sufixo Novo texto_novo.txt
prefixo sti
sufixo Novo Documento de texto.txt

hasta!

jr.

On 7/17/07, Leslie Watter <address@hidden> wrote:
Olá,

tente fazer como mostro abaixo :D

Veja que eu substitui o teu segundo cut por
cut -f 2- -d "_"
note o menos ao lado do 2 (sem espaço)
Assim vc pega todos os campos depois do primeiro _
o hífen entre o nome do setor e o arquivo foi colocado no echo, então é só
copiar e colar abaixo :)

leslie:~/x/z$ ls
1213_a la ha  124_b la ha
leslie:~/x/z$ for i in *; do setor=`echo $i | cut -f 1 -d "_"`;
nomearq=`echo $i | cut -f 2- -d "_"`; echo $setor - $nomearq; done
1213 - a la ha
124 - b la ha


Sds,

LEslie
2007/7/17, frsamp <address@hidden>:
>
>   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!
>
>
>



--
Leslie H. Watter


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



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


Links do Yahoo! Grupos





reply via email to

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