Comando para rodar script em multiplos arquivos

Iniciado por andresgodoy, 11 de Setembro de 2014, 09:10

tópico anterior - próximo tópico

andresgodoy

Olá
Estou rodando um script que converte uma imagem e um formato diferente. Como tenho 4000 imagens, gostaria de fazer isso em um unico comando

o script roda assim:
;executavel -i entrada -o saida -p modelo

as imagens tem o mesmo nome, mas estão numeradas diferente no final (exempo: imagem_00001.img .... imagem_04000.img)

tentei o comando:
;for n in *.img; do executavel –i $n –o convert/$n –p "template_file" ; done

porem nao rolou....
alguem sabe o erro?

grato

Tota

#1
Olá

Encontrei na rede este script que converte arquivos de áudio wma em mp3 usando o mplayer.

Quem sabe você pode adaptar para seu programa de conversão de imagens

http://voidmain.is-a-geek.net/files/scripts/wma2mp3


andresgodoy

O programa funciona bem

queria apenas rodar ele multiplas vezes (utilizando a variavel N)

Darcamo

Sei pouco de bash, mas o seu loop parece estar correto. Se o programa funciona bem com um único arquivo então deveria funcionar também nesse loop. O que que "não rolou"? Qual o erro?

Uma boa dica para testar o loop é colocar "echo" na frente do "comando". Assim ao invés de executar o comando você vai ver exatamente o que o loop tenta rodar. Se cada linha impressa está com a chamada correta para o seu comando então não tem porque não dar certo.

selvaking

Citação de: andresgodoy online 11 de Setembro de 2014, 09:10
tentei o comando:
;for n in *.img; do executavel –i $n –o convert/$n –p "template_file" ; done

Existe a subpasta convert no diretório que vc tá rodando o comando?
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

andresgodoy

existe sim....

ele roda o loop N vezes (sendo N o numero de imagens), mas nao da um output...
funciona perfeitamente sem o loop

irtigor

Eu prefiro quando mostram exatamente o que estão fazendo, porque muitas vezes o problema é sutil... Nesse caso hipotético tudo deve funcionar corretamente, o único errinho que vejo é que o $n dentro do bloco não está entre aspas, mas com essa entrada não vai ser problema porque os nomes não possuem espaços (ou qualquer palavra reservada).

sigur

Por que não colocar o comando de converter dentro do laço?

Eu faço assim:

for file in *.jpg; do convert -resize 1600 "$file" 1600/"$file"; done;


para converter as imagens para 1600 de resolução.