BASH não é tão ruim para esse problema. Você só precisa usar o comando date muito poderoso, mas subutilizado.
for i in {1..10}; do
hrmin=$(date -u -d@$(($i * 10 * 60)) +"%H:%M")
outfile=${hrmin/:/-}.mp4
ffmpeg -i video.mp4 -ss ${hrmin}:00 -t 00:10:00 -c copy ${outfile}
done
date comando explicado
date com -d flags permite que você defina qual data que deseja exibir (em vez da data e hora atuais, que é o padrão). Neste caso, estou configurando-o para uma hora do UNIX, prefixando o símbolo @ antes de um inteiro. O inteiro neste caso é o tempo em incrementos de dez minutos (calculado pela calculadora interna BASH: $((...)) ).
O símbolo + informa ao date que você gostaria de especificar um formato para exibir os resultados. No nosso caso, nos preocupamos apenas com a hora ( %H ) e os minutos ( %M ).
E, finalmente, o -u é exibido como hora UTC em vez de local. Isso é importante neste caso porque especificamos a hora como UTC quando fornecemos o horário do UNIX (a hora do UNIX é sempre como UTC). Os números provavelmente não começariam de 0 se você não especificasse -u .
Substituição de variável BASH explicada
O comando date nos deu exatamente o que precisávamos. Dois pontos em um nome de arquivo podem ser problemáticos / não padronizados. Então, nós substituímos o ':' por um '-'. Isso pode ser feito pelo comando sed ou cut ou tr , mas como essa é uma tarefa tão simples, por que gerar um novo subshell quando o BASH pode fazer isso?
Aqui usamos a simples substituição de expressão do BASH. Para fazer isso, a variável deve estar contida nas chaves ( ${hrmin} ) e, em seguida, usar a notação de barra normal. A primeira string após a primeira barra é o padrão de pesquisa. A segunda string após a segunda barra é a substituição.
A substituição de variáveis BASH e muito mais pode ser encontrada no link .