파일 이름 식별자가 포함된 일련 의 이미지로 구성된 find
.gif 파일 목록을 갖고 싶습니다.convert
png
이것유제. 여기서 find
+ 를 결합하는 방법에 대해 생각하고 있습니다 convert
.
다음을 통해 .gif 파일을 나열할 수 있습니다.
find -L *.gif -type f
.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 {} +