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