Autor Tópico: Comando para rodar script em multiplos arquivos  (Lida 9004 vezes)

Offline andresgodoy

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Comando para rodar script em multiplos arquivos
« Online: 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

Offline Tota

  • Usuário Ubuntu
  • *
  • Mensagens: 14.982
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #1 Online: 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

« Última modificação: 11 de Setembro de 2014, 10:01 por Tota »

Offline andresgodoy

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #2 Online: 11 de Setembro de 2014, 10:11 »
O programa funciona bem

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

Darcamo

  • Visitante
Re: Comando para rodar script em multiplos arquivos
« Resposta #3 Online: 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.

Offline selvaking

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 1.172
  • Parque Anchieta - Rio de Janeiro - RJ
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #4 Online: 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?
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

Offline andresgodoy

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #5 Online: 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

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #6 Online: 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).

Offline sigur

  • Usuário Ubuntu
  • *
  • Mensagens: 1.175
    • Ver perfil
Re: Comando para rodar script em multiplos arquivos
« Resposta #7 Online: 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.