1
resposta

[Dúvida] Não consigo rodar esse código,

Não consigo rodar esse código, alguém pode me ajudar??

o código está abaixo, desde já agradeço.

#!bin/bash converte_imagem (){ cd ~/Downloads/imagens-livros

if [ ! -d png ] then mkdir png fi

for imagem in *.jpg

do local imagem_sem_extensao=$( ls $imagem|awk -F. '{print $1}') convert $imagem_sem_extensao.jpg png $imagem_sem_extensao.png done }

converte_imagem if [ $? -eq 0 ] then

echo "conversao realizada com sucesso" echo "houve uma falha no processo" fi

1 resposta

Ola @ Yasmin Viana Da Silva Dias, segue algumas ideias. Observe alguns comandos.

Eu tenho mais algumas soluções.

A solução mais simples é como a maioria já postada. Um simples bash for loop.

for i in .png ; do convert "$i" "${i%.}.jpg" ; done

Por alguma razão, tendo a evitar loops no bash, então aqui está uma abordagem xargs mais unixy, usando o bash para a confusão de nomes.

ls -1 .png | xargs -n 1 bash -c 'convert "$0" "${0%.}.jpg"'

A que eu uso. Ele usa o GNU Parallel para executar vários trabalhos ao mesmo tempo, aumentando o desempenho. Ele é instalado por padrão em muitos sistemas e está quase definitivamente em seu repositório (é um bom programa para se ter por perto).

ls -1 *.png | parallel convert '{}' '{.}.jpg'

O número de trabalhos é padronizado para o número de núcleos de CPU que você possui. Encontrei melhor uso da CPU usando 3 tarefas no meu sistema dual-core.

ls -1 *.png | parallel -j 3 convert '{}' '{.}.jpg'

E se você quiser algumas estatísticas (um ETA, trabalhos concluídos, tempo médio por trabalho...)

ls -1 *.png | parallel --eta convert '{}' '{.}.jpg'

Há também uma sintaxe alternativa se você estiver usando o GNU Parallel.

parallel convert '{}' '{.}.jpg' ::: *.png

E uma sintaxe semelhante para algumas outras versões (incluindo debian).

parallel convert '{}' '{.}.jpg' -- *.png