gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:12:24 25 4
gpt4 key购买 nike

我只想评论一个与此非常相似的问题的答案,但我没有足够的代表。我正在寻找一种方法来更改这行代码:

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

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

提前致谢。

(以上代码行归功于 LordNeckBeard,来自 this 帖子。)

最佳答案

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

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

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

如果您想给转换后的文件取一个与原始文件不同的名称,请参阅 Parameter Expansion .

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

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

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

关于linux - 递归转换嵌套文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43139147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com