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: Julio C. Neves
Subject: Re: [shell-script] fim de um loop devido ao exit do avconv
Date: Thu, 21 Nov 2013 17:58:32 +0000

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.



reply via email to

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