ファイル名識別子を含む一連のイメージで構成された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 +
オペレーティングシステム:Debian 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 {} +