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

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

Re: [shell-script] Trocar a extensão de arquivos


From: Julio C. Neves
Subject: Re: [shell-script] Trocar a extensão de arquivos
Date: Thu, 3 Dec 2015 02:02:08 -0200

Fala Gustavo,
e aí?

Cara a coisa é um pouquinho só mais complicada do renomear, pq esses arquivos de imagem têm um cabeçalho cheio (mas cheio meeeesmo) de informações acerca da foto e as informações deles diferem a cada tipo de extensão. Comprove isso executando:
$ identify -verbose /caminho/da/imagem.jpg
e
$ identify -verbose /caminho/da/imagem.png)
E não só esses cabeçalhos são diferentes para cada tipo de arquivo, mas tb seus algorítimos de compactação.

Para fazer essas coisas existe uma suite sensacional para trabalhar com tratamento imagens em modo texto (da qual o identify, que citei, faz parte), chamada Image Magick que é formada, se não me engano, por 13 utilitários, sendo o mais usado o convert, que usaremos para converter esse monte de foto.

Só para vc ver como ela é abrangente, experimente usar o seu utilitário display, fazendo:
$ display /caminho/da/imagem.jpg
e então clique na imagem.

Eu comecei a escrever sobre essa suite, mas comecei a viajar na matemática do código, perdi muito tempo e desisti. Mas escrevi muita coisa sobre o convert e publiquei aqui. Dá uma olhadinha para vc ver quanta coisa dá para fazer...

Já falei demais. Para fazer o que vc quer, faça:

Primeiramente vc tem de saber quais extensões tem. Para isso faça:

ls | cut -f2- -d. | sort | uniq

Vamos supor que, sem contar com a jpg, tivesse JPG, JPEG, jpeg, Png, PNG e png. Isso valerá para as 2 soluções que darei:

1. Solução meia boca:
for Imagem in *.{JPG,JPEG,jpeg,Png,PNG,png}
do
    Nome=${Imagem%.*}
    convert $Imagem $Nome.jpg
done
read -p "Posso remover os arquivos antigos? (S/n) " SN
[ $SN = n -o $SN = N ] || rm *.{JPG,JPEG,jpeg,Png,PNG,png}

Ou para fazer cheio de estilo, faça:

2. Solução profissa:
Tot=$(ls *.{JPG,JPEG,jpeg,Png,PNG,png} | wc -l)
Incr=$((100/Tot))
Perc=0
for Imagem in *.{JPG,JPEG,jpeg,Png,PNG,png}
do
    Nome=${Imagem%.*}
    echo "# Convertendo $Imagem"
    convert $Imagem $Nome.jpg
    echo $((Perc+=Incr))
done | zenity --progress --auto-close
zenity --question --text "Posso remover os arquivos\n$(ls *.{JPG,JPEG,jpeg,Png,PNG,png})" &&
    rm *.{JPG,JPEG,jpeg,Png,PNG,png}

É capaz de ter algum errinho, pq está tarde e não testei. Qq dúvida me ligue, vc ficou com meu tel, não é?



Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
São Paulo 4Linux 07/12 a 11/12
Rio de Janeiro Voyager 15/12 a 17/12
Rio de Janeiro EDX 07/03 a 11/03
São Paulo 4Linux 11/04 a 15/04
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 2 de dezembro de 2015 23:46, Gustavo Filgueiras address@hidden [shell-script] <address@hidden> escreveu:
 

Caros, boa noite !

   tenho um pasta com diversas subpastas e arquivos de fotos dentro dela.
   Porém, as fotos tem extensões diferentes: ( ex: JPG jgp Png PNG png )

   Eu estou querendo colocar todas as imagens para jpg, existe alguma forma de que trocar apenas a extensão mantendo o nome original do arquivo?

   Obrigado e boa noite :)

   Gustavo Filgueiras



reply via email to

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