Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: andresgodoy em 11 de Setembro de 2014, 09:10

Título: Comando para rodar script em multiplos arquivos
Enviado por: andresgodoy em 11 de Setembro de 2014, 09:10
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
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: Tota em 11 de Setembro de 2014, 09:56
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

Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: andresgodoy em 11 de Setembro de 2014, 10:11
O programa funciona bem

queria apenas rodar ele multiplas vezes (utilizando a variavel N)
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: Darcamo em 11 de Setembro de 2014, 10:43
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.
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: selvaking em 11 de Setembro de 2014, 13:40
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?
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: andresgodoy em 11 de Setembro de 2014, 14:55
existe sim....

ele roda o loop N vezes (sendo N o numero de imagens), mas nao da um output...
funciona perfeitamente sem o loop
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: irtigor em 11 de Setembro de 2014, 15:40
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).
Título: Re: Comando para rodar script em multiplos arquivos
Enviado por: sigur em 12 de Setembro de 2014, 16:56
Por que não colocar o comando de converter dentro do laço?

Eu faço assim:

Código: [Selecionar]
for file in *.jpg; do convert -resize 1600 "$file" 1600/"$file"; done;

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