我是一名脚本编辑新手。我使用 ffmpeg 脚本将 MOV/AVI 视频文件转换为 MP4 格式,然后在处理后移动文件:
for f in *.mov; do ffmpeg -y -i "$f" "${f%}.mp4"; done
mv -f *.mov /Users/me/Videos/mov
mv -f *.MOV /Users/me/Videos/mov
mv -f *.avi /Users/me/Videos/avi
mv -f *.AVI /Users/me/Videos/avi
当前脚本会转换所有视频,然后将它们全部移动到其他文件夹。请问如何调整脚本,以便每个视频在处理后立即移动(而不是等到所有视频完成)?这将是一个很大的改进,因为有时有很多视频,脚本会因某种原因而中断(不是脚本的错误)。这将使监控进度变得更容易。
目前我手动调整第一行,将 *.mov 更改为 *.avi 请有一种简单的方法可以在同一行内处理视频文件格式/扩展名吗?
是否有更好的方法来处理多行小写/大写的 mv 语句?如果没有该类型的文件,它们也会给出错误。
谢谢你
上面的脚本是有效的,但通过增强或更改会更好。
您正在寻找这样的东西:
find . -type d ! -name . -prune -o \
\( -iname '*.mov' -o -iname '*.avi' \) -exec sh -c '
for src; do
echo ffmpeg -y -i "$src" "${src%.*}.mp4" &&
echo mv "$src" "/Users/me/Videos/$(printf "%s\n" "${src##*.}" | tr A-Z a-z)"
done' sh {} +
如果输出看起来不错,请删除两个
echo
。