A grande resposta da Steeldriver no comentário
find -L . -name '*.gif' -execdir sh -c 'for f;
do convert -coalesce "$f" "${f%.gif}%05d.png";
done' sh {} +
Eu quero que find
uma lista de arquivos .gif, convert
todos eles para séries de png
imagens com identificadores de nome de arquivo e faça o loop dessas séries em este LaTeX.
Eu estou aqui thining como combinar o find
+ convert
.
Eu posso listar o arquivo .gif por:
find -L *.gif -type f
Eu posso converter a imagem .gif para uma série de imagens png, mas sem identificador próprio
# TODO take filename from find list and give to convert and to the resulted filename
convert -coalesce giphy.gif out%05d.png
Pseudocódigo em que {}.png
tenta dizer que pega o novo nome de arquivo da lista de nomes de arquivos, mas acho que não funciona porque a lista também contém .gif
extension, então ele deve ser removido:
find -L *.gif -type f -exec convert -coalesce {} {}.png +
OS: Debian 8.7
com zsh
autoload -U zmv # best in ~/.zshrc
splitgif() convert -coalesce "$@"
zmv -p splitgif './(***/)(*).gif(#q-.)' './${1//\%/%%}${2//\%/%%}%05d.png'
Observe a necessidade de ./
evitar problemas com arquivos denominados gif:whatever.gif
, por exemplo, e ${1//\%/%%}
, para escapar dos caracteres %
que podem ser encontrados nos caminhos de arquivos.
***
é o mesmo que **
, mas segue os links simbólicos ao descer a árvore de diretórios como -L
(#q...)
qualifier glob -
: aplica as seguintes verificações ao destino do link simbólico para links simbólicos ( stat()
em vez lstat()
) como com seu -L
. .
: somente arquivos regulares (equivalente a -type f
) Tags find debian conversion