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

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

Re: [shell-script] libreoffice odp para jpg ( solução-final)


From: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] libreoffice odp para jpg ( solução-final)
Date: Tue, 21 Feb 2012 17:29:47 -0200

Julio, não sei afirmar pelo Jorge, mas acho que ele usou a outra forma por
que supondo que Mai = 2 e Num = 10, o comando ficaria

$ mv $Arq $Nom-$(printf "%0$Mai"d $Num).jpg
$ mv arq-10.jpg arq-10.jpg
e isso causa erro.

Nesse caso, ou ele fecha a saida de erro ou ele só deve renomear quando Mai
for maior que Num | wc -L.

Me corrija se estiver errado. o/

Alysson Gonçalves de Azevedo
(11) 8491-7730




Em 21 de fevereiro de 2012 16:59, Julio C. Neves
<address@hidden>escreveu:

> **
>
>
> Jorge,
> acho que vc não entendeu legal o conceito do wc -L e do printf. Repare:
>
> $ cat > lixo
> 1
> 22
> 333
> 4444
> 55555
> 1231
> 3234
> 34
> $ wc -L lixo
> 5 lixo
> $ cat lixo | wc -L
> 5
> $ Mai=$(cat lixo | wc -L)
> $ while read Num
> do
> printf "%0${Mai}d\n" $Num
> done < lixo
> 00001
> 00022
> 00333
> 04444
> 55555
> 01231
> 03234
> 00034
>
> Como vc viu o wc -L me devolveu o tamanho da maior *linha* de lixo, então o
> teste que vc faz no fim do seu script é desnecessário, pois $Mai sempre
> conterá a qtd de algarismos do número de maior tamanho.
>
> Assim sendo, pode trocar:
>
> Num1=`echo $Num | wc -L` #guarda o tamanho do numero contido em Arq
> if [[ "$Num1" < "$Mai" ]] # ver *** abaixo
> then
> mv $Arq $Nom-$(printf "%0$Mai"d $Num).jpg
> fi
>
> por um simples:
>
> mv $Arq $Nom-$(printf "%0$Mai"d $Num).jpg
>
> Abcs,
> Julio
> *Já foi lançado "Bombando o
> Shell<
> http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666
> >
> ". *
> *Show **de interfaces gráficas sob Shell!*
> *
>
> *
>
> Em 21 de fevereiro de 2012 13:22, Jorge Barros de Abreu <
> address@hidden> escreveu:
>
> > On Tuesday 21 February 2012 09:24:58 you wrote:
> > > chei que a melhor dica havia sido o read evitando o cut, mas a que vc
> > > gostou foi do printf (veja como usar
> > > aqui<
> > http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo009#Envenenando_a_
> > > escrita> ).
> >
> >
> > Fui no link e acrescentei mais comentários ao script.
> > Enquanto fazia esses comentários percebi que o script não funcionava a
> > contendo nas verificações e
> > prevenções de erro quando o nome de arquivo de entrada era algo do tipo:
> >
> > ../nome.extensão
> >
> > Ajustei o script e o resultado está abaixo.
> >
> >
> > >
> > > Só se mata variáveis em desuso nos daemons, pois estes estão rodando
> > > perpetuamente. Um script qdo acababa, leva conigo todas as alterações
> > > feitas no sistema e todo lixo criado, te devolvendo ao Shell "limpo"
> que
> > > vc estava qdo comandou a execução do script.
> >
> > OK. Obrigado mais uma vez.
> >
> > Me parece que agora é a versão final:
> >
> > #!/bin/bash
> > # $1 nome da apresentacao a ser convertida com a extensão pdf explicitada
> > #obtida a partir o libreoffice impress
> > #
> > # printf "%10d\n" 32
> > #
> > # Imprime 10 caracteres sendo, iniciando-se a contagem a
> > # partir do número mais à direita, o primeiro número é 2
> > # e o segundo é o número 3 e as oito posições restantes
> > # são preenchidos com espaços em branco. Ao terminar
> > # posiciona o cursor na linha seguinte (o '\n')
> > #
> > # printf "%010d\n" 32
> > #
> > # Imprime 10 caracteres sendo, iniciando-se a contagem a
> > # partir do número mais à direita, o primeiro número é 2 e
> > # o segundo é o número 3 e as oito posições restantes são
> > # preenchidos com zeros. Ao terminar posicione o cursor na
> > # linha seguinte (o '\n')
> > #
> > # extensao do nome
> > EXTENSAO=`echo $1 | rev | cut -d / -f 1 | rev | cut -d '.' -f 2`
> > if [[ "$EXTENSAO" != "PDF" ]] && [[ "$EXTENSAO" != "pdf" ]]
> > then
> > echo -e "\nA extensao tem que ser ou pdf ou PDF"
> > exit
> > fi
> > unset EXTENSAO
> > pdftotext $1 #converte de pdf para texto puro
> > #usar esse txt para gravar uma versão
> > #em odt, pdf e doc ajustando o tamanho da
> > #página para A6 e formato paisagem
> > # extrai a parte da frente do caminho-localização/nome.extensao
> > # após a última barra antes do ponto que separa a extensao do arquivo.
> > # parte do nome antes do ponto
> > NOME=`echo $1 | rev | cut -d / -f 1 | rev | cut -d '.' -f 1`
> > #trecho que converte a apresentação para jpg criando vários arquivos
> > #renomeia os arquivos criados possibilitando que eles sejam exibidos
> > #na ordem correta por qualquer programa de exibição de fotografias
> > convert "$1" "$NOME".jpg
> > # cut isola os números e wc -L pega a maior quantidade de caracteres
> > # nao pega o maior número em valor absoluto.
> > # os números são criados automaticamente pelo convert
> > Mai=$(ls $NOME-[0-9]*.jpg | cut -f2 -d- | cut -f1 -d. | wc -L)
> > for Arq in $(ls $NOME-[0-9]*.jpg)
> > {
> > #IFS='-.' define dois separadores de campo
> > #read Nom Num Ext <<< "$Arq" lê os valores a partir do valor de Arq
> > IFS='-.' read Nom Num Ext <<< "$Arq"
> > Num1=`echo $Num | wc -L` #guarda o tamanho do numero contido em Arq
> > if [[ "$Num1" < "$Mai" ]] # ver *** abaixo
> > then
> > mv $Arq $Nom-$(printf "%0$Mai"d $Num).jpg
> > fi
> > }
> >
> > #***renomeia somente se a quantidade de caracteres do número armazenado
> em
> > Arq for menor
> > --
> > Data Estelar 2455977,128079
> > http://sites.google.com/site/ficmatinf
> > Desejo-lhe Paz, Vida Longa e Prosperidade.
> > São Bem Vindas Mensagens no Formato texto UTF-8 com Acentos.
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > 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]
>
>  
>


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



reply via email to

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