Considere que você tenha vários arquivos de vídeo ou de som distribuídos em diversas pastas localizadas em um mesmo diretório. Como fazer para saber quanto tempo tem cada arquivo? O script “exibe_tempo.sh” abaixo facilita esse trabalho. Ele lista todos esses arquivos e verifica a duração de cada um através do comando “avconv”, imprimindo os resultados na tela.
#!/bin/bash ## Script para exibir tempo dos vídeos de vários subdiretórios extensao='MP4' caminho='/path/videos' cd $caminho # Encontrar todos os arquivos com extensão informada no diretório informado e ordenar por nome lista=$(find . -maxdepth 2 -name "*.$extensao" | sort) for arq in $lista; do # Obter informação da duração do arquivo em HH:MM:SS.centésimos tempo=$(avconv -i $arq 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,//) # Imprimir nome do arquivo e duração echo $arq "-" $tempo done
Para somar o tempo de vários arquivos, pode ser feita uma adaptação no script acima para guardar em um vetor os tempos dos arquivos de uma mesma pasta. Esse vetor servirá de entrada para o script abaixo (soma_tempo.sh), que deverá somar o tempo de cada componente do vetor, informado em HH:MM:SS.
#!/bin/bash ## Script para somar os tempos de um vetor EPOCH='jan 1 1970' sum=0 vetor_tempo=(00:00:34 00:00:35 00:01:32) LIMITE=`echo ${vetor_tempo[*]} | wc -w` for ((i=0; i <= $LIMITE-1 ; i++)); do sum="$(date -u -d "$EPOCH ${vetor_tempo[$i]}" +%s) + $sum" done tempo_segundos=$(echo $sum|bc) echo $tempo_segundos date -d@$tempo_segundos -u +%H:%M:%S
A saída na tela será do total de segundos e o valor convertido em HH:MM:SS. Esse script é útil também para somar as horas trabalhadas em um mês, por exemplo.
Para fazer uso dos scripts, copie o conteúdo para um editor de texto simples (como o bloco de notas) e salve o arquivo com os nomes sugeridos (terminados com “.sh”). Coloque o arquivo na pasta onde estão os arquivos. Em um terminal Linux, execute o comando “bash NOME_DO_SCRIPT.sh” para ver a saída dos programas impressa na tela. Caso não tenha o programa avconv, ele pode ser instalado através do comando “sudo apt install libav-tools”.
Mas como é que se usa ? Quais os passos ?
Oi Lucas, incluí um parágrafo no final explicando como usar cada script.
Terminal Linux é o mesmo cmd ?
Não, o cmd é o prompt de comandos do Windows. Esses scripts usam bash, que é uma linguagem que já vem junto com praticamente qualquer Linux. No Windows 10 tem como instalar Linux junto para usar o bash, mas aí eu nunca fiz isso.