shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] fim de um loop devido ao exit do avconv


From: Dojai
Subject: Re: [shell-script] fim de um loop devido ao exit do avconv
Date: Thu, 21 Nov 2013 17:05:52 -0200
User-agent: KMail/4.8.5 (Linux/3.2.0-56-generic-pae; KDE/4.8.5; i686; ; )

Ficou assim:

 

#/bin/bash

IFS="

" # evita problemas com nomes de arquivos contendo brancos (separador deve ser <ENTER>)

while read ARQ; do

NOVOARQ=${ARQ/%.mp4/.avi} # gera o novo nome do arquivo

[ -f $NOVOARQ ] && {

echo "'$NOVOARQ' já existe. Não será feita a conversão."

continue

}

echo "Convertendo de '$ARQ' para '$NOVOARQ'"

avconv -i "$ARQ" "$NOVOARQ"

done < <(ls *.mp4)

exit

 

 

Fiz apenas pequenas modificações à sugestão do mestre Julio.

Estou estudando os links sugeridos e feito isso irei estudar e testar a segunda forma sugerida.

 

Em que situações o exit (com erro) de um programa afeta um loop? Pode ocorrer algum outro erro durante a conversão e o loop seria finalizado, sendo que o que se deseja é que continuasse com a conversão dos próximos arquivos.

 

Thanks,

Dojai

 

Em qui 21 nov 2013 17:58:32 você escreveu:

 

Não testei, mas é provável que o script abaixo funcione.

#/bin/bash

IFS="

"   # evita problemas com nomes de arquivos contendo brancos

while read ARQ; do

    NOVOARQ=${$ARQ/.mp4/.avi} # gera o novo nome do arquivo

    [ -f $NOVOARQ ] && {

        echo $NOVOARQ já existe

        continue

    }

    echo "Obtendo o arquivo $NOVOARQ

    avconv -i "$ARQ" "$NOVOARQ"

done < <(ls *.mp4)

exit



Outra forma interessante seria:

Mp4=$(ls *.mp4)

Avi=$(cut -f2 -d"." <<< "$Mp4" | xargs -i echo {}.avi)

paste <(echo "$Mp4") <(echo "$Avi) | xargs -L1 avconv -i


Me diga se a última funfou. Se sim, eu explico, mas antes veja isso e isso.


Abcs,

Julio

A partir de 02/12 estarei ministrando um curso completo de Shell no Rio de Janeiro.

@juliobash

Facebook? Neither that the cow cough...

;)


 



Em 21 de novembro de 2013 17:12, Dojai <address@hidden> escreveu:

 

Pessoal,

Fiz um script para converter uns arquivos .mp4 em .avi; meu problema eh que se
o arquivo .avi jah existe o while eh interrompido. Eu quero que apenas nao
converta esse arquivo e continue o loop.

A seguir o script:

#/bin/bash
MEUPID=$$
MEUNOME=${0##*/} # obtem soh o nome desta rotina
ARQTEMP="/tmp/$MEUNOME-$MEUPID.tmp"
ls *.mp4 > "$ARQTEMP" # manda para um arquivo para evitar
# problemas com nomes de arquivos contendo brancos
{ while read ARQ; do
SOHNOME=${ARQ%%.mp4} # pega o nome do arquivo sem a extensao
NOVOARQ=$SOHNOME.avi # gera o novo nome do arquivo
echo "Convertendo o arquivo '$SOHNOME' do formato mp4 para avi"
avconv -i "$ARQ" "$NOVOARQ"
done } < "$ARQTEMP"
rm -f "$ARQTEMP"
exit

Jah verifiquei o ARQTEMP e ele estah com todos os arquivos nele, mas o loop
cessa assim que for encontrado um .avi jah existente.

 




--

Eduardo Jaime Quiros Batres, MS

Analista de Tecnologia da Informação

Diretoria de Tecnologia da Informação

Universidade Federal de Viçosa

(31) 3899-3030

address@hidden


reply via email to

[Prev in Thread] Current Thread [Next in Thread]