Como listar todos arquivos no formato ".ts" de pastas e subpastas para ser convertidos para ".avi"?

1. Como listar todos arquivos no formato ".ts" de pastas e subpastas para ser convertidos para ".avi"?

Braga
bragaXT

(usa Debian)

Enviado em 25/10/2016 - 18:52h

Salve,
Encontrei um script em shell aqui no forum <https://goo.gl/8lRf1S> modifiquei ele para atender minha necessidade e ficou assim:

#!/bin/bash
[ "$1" ] && cd "$1"

ls -1 *.TS
[ "$?" -ne 0 ] && echo 'Sem arquivos TS nesse diretório' && exit 0
for ARQUIVO in $(ls -1 *.TS)
do
ARQ_DESTINO="${ARQUIVO%%.TS}.avi"
echo "Convertendo $ARQUIVO para $ARQ_DESTINO"

ffmpeg -i "$ARQUIVO" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "$ARQ_DESTINO"
done

Só que eu não sei como fazer para esse script entrar nos subdiretórios e pegue cada arquivo ".ts" e converta para ".avi", nesse caso ai acima ele só faz no diretório em que o script está.
Como posso fazer com esse script para fazer esse processo?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/10/2016 - 10:50h

bragaXT escreveu:

#!/bin/bash
[ "$1" ] && cd "$1"

find -iname "*.TS"
[ "$?" -ne 0 ] && echo 'Sem arquivos TS nesse diretório' && exit 0
for ARQUIVO in $(find -iname "*.TS")
do
ARQ_DESTINO="${ARQUIVO%%.TS}.avi"
echo "Convertendo $ARQUIVO para $ARQ_DESTINO"
ffmpeg -i "$ARQUIVO" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "$ARQ_DESTINO"
done


Rapaz meu código ficou assim,
Só que na pratica não funcionou.

Eu quero pegar todos arquivos de cada subdiretório que possua a extensão ".TS" e converter para ".avi" usando o parametro do ffmepeg
ffmpeg -i "arquivo_de_origem.TS" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "arquivo_destino.avi"

E não está dando certo.

===================================================================================
Bom dia.
O "LAÇO" for, esta certo . . .
Teste sem o comando de conversão e verifique se lista todos ".TS"

#[ "$?" -ne 0 ] && echo 'Sem arquivos TS nesse diretório' && exit 0 #DESNECESSáRIO, o "STATUS da SAíDA Do find" é sempre "0"
for ARQUIVO in $(find -iname "*.TS");do
echo "Convertendo $ARQUIVO para ${ARQUIVO/TS/avi}"
done

Prováveis causas p/ o não funcionamento:
Problemas no comando "ffmpeg"
O "LAÇO" não da o tempo necessário para a conversão, nesse caso, teria que fazer o "LOOPING" com uma FUNÇÃO.

att.:
Marcelo Oliver



3. Re: Como listar todos arquivos no formato ".ts" de pastas e subpastas para ser convertidos para ".avi"?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/10/2016 - 20:03h

bragaXT escreveu:

Salve,
Encontrei um script em shell aqui no forum <https://goo.gl/8lRf1S> modifiquei ele para atender minha necessidade e ficou assim:

#!/bin/bash
[ "$1" ] && cd "$1"

ls -1 *.TS
[ "$?" -ne 0 ] && echo 'Sem arquivos TS nesse diretório' && exit 0
for ARQUIVO in $(ls -1 *.TS)
do
ARQ_DESTINO="${ARQUIVO%%.TS}.avi"
echo "Convertendo $ARQUIVO para $ARQ_DESTINO"

ffmpeg -i "$ARQUIVO" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "$ARQ_DESTINO"
done

Só que eu não sei como fazer para esse script entrar nos subdiretórios e pegue cada arquivo ".ts" e converta para ".avi", nesse caso ai acima ele só faz no diretório em que o script está.
Como posso fazer com esse script para fazer esse processo?


Boa noite bragaXT.
Para listar recursivamente, usa-se o -R.
Portanto, qdo se usa um argumento, não lista nos subdiretórios.
Para contornar, use o find . . .
find -iname "*.TS"

att.:
marcelo oliver




4. Re: Como listar todos arquivos no formato ".ts" de pastas e subpastas para ser convertidos para ".avi"?

Braga
bragaXT

(usa Debian)

Enviado em 25/10/2016 - 22:40h

#!/bin/bash
[ "$1" ] && cd "$1"

find -iname "*.TS"
[ "$?" -ne 0 ] && echo 'Sem arquivos TS nesse diretório' && exit 0
for ARQUIVO in $(find -iname "*.TS")
do
ARQ_DESTINO="${ARQUIVO%%.TS}.avi"
echo "Convertendo $ARQUIVO para $ARQ_DESTINO"
ffmpeg -i "$ARQUIVO" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "$ARQ_DESTINO"
done


Rapaz meu código ficou assim,
Só que na pratica não funcionou.

Eu quero pegar todos arquivos de cada subdiretório que possua a extensão ".TS" e converter para ".avi" usando o parametro do ffmepeg
ffmpeg -i "arquivo_de_origem.TS" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "arquivo_destino.avi"

E não está dando certo.


5. Re: Como listar todos arquivos no formato ".ts" de pastas e subpastas para ser convertidos para ".avi"?

Braga
bragaXT

(usa Debian)

Enviado em 26/10/2016 - 12:44h

Problema solucionado,
As dicas do amigo Marcelo ajudaram bastante,
Também tive a ajuda do stackoverflow @stderr,
Gerei o código final ficando assim:


#!/bin/bash
[ "$1" ] && cd "$1"
find . -name "*.TS" | while read -r ARQUIVO;
do
ARQ_DESTINO="${ARQUIVO%%.TS}.avi"
echo "Convertendo $ARQUIVO para $ARQ_DESTINO"
ffmpeg -i "$ARQUIVO" -vcodec libxvid -b 2000k \
-acodec libmp3lame -ac 2 -ar 44100 -ab 128k "$ARQ_DESTINO" < /dev/null
done


Fica ai a dica, esse script converte todos arquivos ".TS" para ".AVI" de pastas e subpastas a partir do diretório atual [onde o script estiver].
Valeu






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts