Discussion:
[shell-script] Conversão de png para jpg
walkerdarvin@yahoo.com.br [shell-script]
2017-02-24 18:01:34 UTC
Permalink
Boa tarde pessoal, é minha primeira vez aqui no grupo. Desde já, agradeço se alguém puder me dar algumas dicas.


Estou fazendo testes em uma pasta com fotos, nela existem algumas subpastas, e em vários diretórios tenho fotos PNG e gostaria de converter para jpg, isso trará um pouco de espaço adicional no meu disco.


Meu script está apresentando problemas e não funciona corretamente.


Diretórios de teste,

~/aa

~/aa/bb
~/aa/cc


Deixei várias imagens dentro deles tipo png e jpg para testar. Ex.: aa/bb/formiga\ atomica.png





Tentei com um find, criando um arquivo texto e depois um for lendo o conteúdo e usando o convert, o comando convert faz com que os arquivos diminuam até 60% em tamanho em relação ao original.




find . -iname '*.png' -ls |awk '{print $11" "$12" "$13" "$14}' > list.txt (rsrsrs, desculpem por isso)
for i in `cat list.txt|cut -d"." -f2`;do convert $i'.png' $i.jpg; done



Obrigado,
Walker Darvin walkerdarvin@yahoo.com.br [shell-script]
2017-02-24 17:53:18 UTC
Permalink
Boa tarde pessoal, é minha primeira vez aqui no grupo. Desde já, agradeço se alguém puder me dar algumas dicas.
Estou fazendo testes em uma pasta com fotos, nela existem algumas subpastas, e em vários diretórios tenho fotos PNG  e gostaria de converter para jpg, isso trará um pouco de espaço adicional no meu disco.
Meu script está apresentando problemas e não funciona corretamente.
Diretórios de teste,
~/aa
~/aa/bb~/aa/cc
Deixei várias imagens dentro deles tipo png e jpg para testar. Ex.:  aa/bb/formiga\ atomica.png


Tentei com um find, criando um arquivo texto e depois um for lendo o conteúdo e usando o convert, o comando convert faz com que os arquivos diminuam até 60% em tamanho em relação ao original.


find . -iname  '*.png' -ls |awk '{print $11" "$12" "$13" "$14}' > list.txt                 (rsrsrs, desculpem por isso)


for i in `cat list.txt|cut -d"." -f2`;do convert $i'.png' $i.jpg; done


Obrigado,
phfbettega@yahoo.com.br [shell-script]
2017-02-24 23:27:31 UTC
Permalink
Olá walkerdarvin, o find tem outras ações além do -ls, poderia ser tudo direto no find.
find -iname '*.png' -ok convert "{}" "{}".jpg \;
'-ok' pede confirmação de cada execução, '-exec' não pede confirmação.
Abraços Paulo
Post by ***@yahoo.com.br [shell-script]
Boa tarde pessoal, é minha primeira vez aqui no grupo. Desde já, agradeço se alguém puder me dar algumas dicas.
Estou fazendo testes em uma pasta com fotos, nela existem algumas subpastas, e em vários diretórios tenho
fotos PNG e gostaria de converter para jpg, isso trará um pouco de espaço adicional no meu disco.
Meu script está apresentando problemas e não funciona corretamente.
Diretórios de teste,
~/aa
~/aa/bb
~/aa/cc
Deixei várias imagens dentro deles tipo png e jpg para testar. Ex.: aa/bb/formiga\ atomica.png
Tentei com um find, criando um arquivo texto e depois um for lendo o conteúdo e usando o convert, o comando
convert faz com que os arquivos diminuam até 60% em tamanho em relação ao original.
find . -iname '*.png' -ls |awk '{print $11" "$12" "$13" "$14}' > list.txt (rsrsrs,
desculpem por isso)
for i in `cat list.txt|cut -d"." -f2`;do convert $i'.png' $i.jpg; done
Obrigado,
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Ivan Lopes lopesivan@poli.ufrj.br [shell-script]
2017-02-25 06:20:08 UTC
Permalink
Uma forma bacana seria:

Diretórios de teste,
~/aa
~/aa/bb
~/aa/cc

find ~/aa/ -type f -name \*.png -printf "%h %f\n"|
while read dir file; do
echo convert ${dir}/$file ${dir}/${file%.png}.jpg
done |
sh

ou uma forma direta

find s/ -type f -name \*.png |
sed -r 's/(.*)\.png/convert "\1.png" "\1.jpg"/' |
sh

--
Ivan Lopes
Ivan Lopes lopesivan@poli.ufrj.br [shell-script]
2017-02-25 07:03:47 UTC
Permalink
Post by ***@yahoo.com.br [shell-script]
Diretórios de teste,
~/aa
~/aa/bb
~/aa/cc
find ~/aa/ -type f -name \*.png -printf "%h %f\n"|
while read dir file; do
echo convert ${dir}/$file ${dir}/${file%.png}.jpg
done |
sh
ou uma forma direta
find s/ -type f -name \*.png |
sed -r 's/(.*)\.png/convert "\1.png" "\1.jpg"/' |
sh
--
Ivan Lopes
--
Ivan Lopes

Loading...