我有一系列文件名为
的图片motorist_intensity_2.jpg
...
...
motorist_intensity_256.jpg
ad我想使用ImageMagick从他们制作动画gif。现在,命令
convert -delay 100 -loop 0 motorist_intensity_* motorist.gif
有效,但帧不按排序顺序排列。我可以使用
生成一个排序文件列表ls motorist_intensity_* | sort -n -t _ -k 3
但是如何将该列表传递给covert
commad代替原始motorist_intensity_*
?
答案 0 :(得分:4)
您可以使用大括号扩展按照您想要的顺序进行扩展:
convert -delay 100 -loop 0 motorist_intensity_{2..256}.gif motorist.gif
答案 1 :(得分:3)
以下内容应该有效:
convert -delay 100 -loop 0 `ls motorist_intensity_* | sort -n -t _ -k 3` motorist.gif
通过将命令ls ...etc
放在后引号中,它将被执行并插入输出
<强>更新强>
最好使用$()
技术来评估表达式(参见下面的评论);另外,我并非100%确定sort
的输出不会包含扰乱你的换行符。解决这两个问题:
convert -delay 100 -loop 0 $(ls motorist_intensity_* | sort -n -t _ -k 3 | xargs echo ) motorist.gif
xargs echo
是一个很好的简写,用于“依次获取输入的每一行输出,并在没有换行符的情况下将它们回显到输出”。这是我将多行转换为单行的首选方法(尽管还有很多其他行)。
PS - 如果文件名包含换行符,则无法解决问题。我假设他们没有...