递归转换嵌套文件夹中的文件

欧文

我只想评论与该问题非常相似的问题的答案,但我的代表人数不足。我正在寻找一种更改此代码行的方法:

for i in *.mkv; do ffmpeg -i "$i" "${i%.*}.mp4"; done

这样它就包含.avi文件,并可以搜索嵌套文件夹。我希望能够定位目标/Videos并将脚本自动遍历到文件夹树中/Videos/2016/January,转换该文件夹中包含的所有视频文件,然后对它们执行相同操作/Videos/2016/February,依此类推。

提前致谢。

(信贷的代码上面一行去LordNeckBeard,从这个帖子。)

欧文

使用LordNeckBeard对的引用find,我提出了以下解决方案:

find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4' \;

完全按照我的预期进行了测试和工作,因此它目前正在整个库中运行。

如果要为转换后的文件提供与原始文件不同的名称,请参见“参数扩展”

如果希望破坏性地转换所有文件,请使用以下命令格外小心

find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4 && rm "{}"' \;

注意:上面的命令不是安全的,并且在转换过程完成之前已删除了一些文件,这意味着我现在已经丢失了这些文件(感谢上帝的备份)。我对一次性文件进行了测试,并确保在开始此过程之前,我已对数据进行了完整的备份。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章