이 .gif를 찾고 변환하는 방법은 무엇입니까?

이 .gif를 찾고 변환하는 방법은 무엇입니까?

파일 이름 식별자가 포함된 일련 의 이미지로 구성된 find.gif 파일 목록을 갖고 싶습니다.convertpng이것유제. 여기서 find+ 를 결합하는 방법에 대해 생각하고 있습니다 convert.

  1. 다음을 통해 .gif 파일을 나열할 수 있습니다.

    find -L *.gif -type f
    
  2. .gif 이미지를 일련의 png 이미지로 변환할 수 있지만 자체 식별자는 없습니다.

    # TODO take filename from find list and give to convert and to the resulted filename
    convert -coalesce giphy.gif out%05d.png
    

의사코드는 {}.png파일 이름 목록에서 새 파일 이름을 가져오라고 말하려고 시도하지만 목록에도 .gif확장명이 포함되어 있으므로 작동하지 않을 것이라고 생각하므로 제거해야 합니다.

find -L *.gif -type f -exec convert -coalesce {} {}.png +

운영 체제: 데비안 8.7

답변1

zsh 사용

autoload -U zmv # best in ~/.zshrc

splitgif() convert -coalesce "$@"
zmv -p splitgif './(***/)(*).gif(#q-.)' './${1//\%/%%}${2//\%/%%}%05d.png'

예를 들어 파일 경로에서 발견될 수 있는 명명된 파일 및 이스케이프 문자와 관련된 문제를 ./피해야 합니다 .gif:whatever.gif${1//\%/%%}%

  • *****당신이 했던 것처럼 디렉토리 트리를 내려갈 때 심볼릭 링크를 따르는 것과 동일합니다-L
  • (#q...)글로벌 예선
  • -:symlink 대상에 다음 검사를 stat()적용 하여 lstat().-L
  • .:일반 파일만 해당( 와 동일 -type f)

답변2

Steeldriver가 댓글에 훌륭한 답변을 주었습니다.

 find -L . -name '*.gif' -execdir sh -c 'for f; 
      do convert -coalesce "$f" "${f%.gif}%05d.png"; 
 done' sh {} +

관련 정보