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: Julio C. Neves
Subject: Re: [shell-script] libreoffice odp para jpg ( solução-final)
Date: Tue, 21 Feb 2012 16:59:56 -0200

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]



reply via email to

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