以下命令是将mp4文件转换为jpg文件,在同一目录中使用相同的文件名,... / httpdocs / save /.
[root@server-xxxxx-x ~]# for i in `find /var/www/vhosts/xxxxxx.com/httpdocs/save/ -type f -name "*.mp4"`; do ffmpeg -i $i `echo $i | sed -En "s/.mp4$/.jpg/p"`; done
现在,我需要将... / httpdocs / save /转换为不同的目录,... / httpdocs / file /,我应该如何更改上面的命令?如果有人能帮助我,我会很感激。
ffmpeg 2.2.2版
答案 0 :(得分:1)
简单方法是从包含输入文件的目录中执行命令:
cd "/path/to/inputs" && for i in *.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/${i%.*}.jpg"; done
如果您想将完整路径放在 for循环中,您可以使用basename
:
for i in /path/to/inputs/*.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/$(basename "$i" .mp4).jpg"; done
...但效率低于仅使用parameter expansion:
for i in /path/to/inputs/*.mp4; do filepath="${i##*/}"; ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/${filepath%.*}.jpg"; done
其他相关问题: