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

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

Re: [shell-script] Troca.sh


From: Alfredo Casanova
Subject: Re: [shell-script] Troca.sh
Date: Fri, 12 Apr 2013 16:26:33 -0300

mais uns pitacos:
você pode usar um echo só, ao invés de um por linha
Se você fizer:

$ echo "teste de echo
em multiplas linhas
só encerra quando encontrar aspas"

o "cd $pasta" também poderia ser removido e adicionado ao loop

for i in $pasta/* #(aqui removemos o subshell rodando ls -l usando expansão
de parâmetros)
do
    mv "$i" "${i/$val1/$val2}"
done

rodei o seu script original em 100 arquivos:

real 0m0.708s
user 0m0.016s
sys 0m0.064s


e com as alterações q propus:

real 0m0.301s
user 0m0.020s
sys 0m0.032s

ficou assim para os testes (tirei os read para pegar o tempo de execução e
adicionei as variaveis no codigo):



echo "
 Este script irá renomear os arquivos da pasta:
 (Entre com o caminho completo do diretorio)"
pasta=pasta
echo "
 Entre com o valor a ser trocado."
val1=teste
echo "
 Entre com o novo valor."
val2=troca
echo "
 Valor1=$val1
 Valor2=$val2 "


for i in $pasta/*
do
mv "$i" "${i/$val1/$val2}"
done

echo " Arquivos após a mudança:
"

ls $pasta/





2013/4/12 Alfredo Casanova <address@hidden>

> So me desculpe a falta de atenção, acabei de ler que errei
> O correto seria: ${i/$val1/$val2}
> Em 12/04/2013 15:16, "Roberto Alves" <address@hidden> escreveu:
>
> **
>>
>>
>> Valeu, Alfredo.
>> Algumas coisas eu faço da maneira bem simples mesmo para que outras
>> pessoas
>> possam entender, pois eu mostro alguns num mini-superbasico curso de Unix
>> que dou aqui na empresa para as novas pessoas.
>> Por isso não gosto de 1liner script para poder mostrá-los.
>> E mesmo assim não sou tão bom pra isso.
>>
>> abração e obrigado,
>> Roberto
>>
>> Em 12 de abril de 2013 13:55, Alfredo Casanova <address@hidden
>> >escreveu:
>>
>> > você pode otimizar seu script assim:
>> >
>> > troque:
>> > mv "$i" "`echo $i |sed s/$val1/$val2/g`"
>> > por:
>> >
>> > mv "$i" "{$i/$val1/val2}"
>> >
>> >
>> >
>> >
>> >
>> >
>> > 2013/4/12 Roberto Alves <address@hidden>
>> >
>> > > **
>> > >
>> > >
>> > > Pessoal,
>> > > eu vi um post sobre inserir um nome em arquivos, e lembrei que fiz um
>> > > script pra trocar os nomes de arquivos.
>> > > Acho que pra mim é bem prático e pode ajudar algumas pessoas.
>> > > Ele troca um pedaço do nome por outra coisa, por exemplo:
>> > >
>> > > Quero trocar a extensão de vários arquivos de uma só vez;
>> > > Para mudar um pedaço do nome por outra coisa em vários arquivos;
>> > > Para inserir uma data no meio dos arquivos.
>> > >
>> > > Aqui eu tenho várias coisas feitas todo o mês que tenho que inserir a
>> > data
>> > > de hoje no final dos arquivos txt então eu troco o '.txt' por
>> > > '_12042013.txt'.
>> > > Alias, acabei de fazer isso há 5 minutos.
>> > >
>> > > Espero que seja útil pra muitos.
>> > >
>> > > Ah, já sei que muitos irão sugerir alterações.
>> > > E espero que sim mas pra mim isso já funciona.
>> > >
>> > > abraços,
>> > > Roberto
>> > > ----------------8<------------------cut here
>> > >
>> > > #/bin/bash
>> > >
>> > > # Script para trocar parte do nome dos arquivos
>> > > # e renomear de acordo com a vontade do usuário.
>> > > # ;)
>> > > # Roberto Alves
>> > >
>> > > echo " "
>> > > echo " Este script irá renomear os arquivos da pasta:"
>> > > echo " (Entre com o caminho completo do diretorio)"
>> > > read pasta
>> > > echo " "
>> > > echo " Entre com o valor a ser trocado."
>> > > read val1
>> > > echo " "
>> > > echo " Entre com o novo valor."
>> > > read val2
>> > > echo " "
>> > > echo " Valor1=$val1"
>> > > echo " Valor2=$val2"
>> > > echo " "
>> > >
>> > > cd $pasta
>> > >
>> > > for i in `ls -1`
>> > > do
>> > > mv "$i" "`echo $i |sed s/$val1/$val2/g`"
>> > > done
>> > >
>> > > echo " Arquivos após a mudança:"
>> > > echo " "
>> > >
>> > > ls $pasta
>> > >
>> > > [As partes desta mensagem que não continham texto foram removidas]
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> > --
>> > []'s
>> > Alfredo Casanova
>> > Linux User #228230
>> > msn: address@hidden
>> > tel: +55 61 9655 9619
>> >
>> >
>> > [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
>> >
>> >
>> >
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>  
>>
>


-- 
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619


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



reply via email to

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