【发布时间】:2020-04-23 03:31:43
【问题描述】:
我主要是 Windows 用户,并且在 PowerShell 中具有相当多的脚本编写能力。不过,由于 Linux 的流行,我最近对学习 bash 很感兴趣。
无论如何, 我已经有一个通用脚本,用于根据扩展名对某些视频文件进行编码。尽管这是非常基本的并且不够强大,无法让我满意。为了帮助我更好地理解 bash,我希望有人可以向我展示可以递归执行此操作的代码,无论目录有多深。
encode.sh
for INF in "/mnt/usbhdd"/**/**/**/*.mkv
do
ffmpeg -i "$INF" -c:v libx264 -preset veryfast -crf 22 -profile:v main -level:v 4.0 -c:a aac -ac 2 -ab 320k "${INF%.*}.m4v"
done
如您所见,第一行无论如何都不理想,我使用 nohup 运行此脚本,以便它可以运行直到完成。
如果您可以为此递归创建代码(可以设置父文件夹)并解释任何更改,我将非常感谢学习方面的帮助。
【问题讨论】:
-
您对recursive glob 感兴趣。只需使用
shopt -s globstar启用 bash 选项,然后改用/mnt/usbhdd/**/*.mkv。 -
在这个bash pitfalls中也搜索If you need recursion
-
@kvantour 第一个是我要找的。感谢所有有用的链接!
-
@kvantour find 也可以。再次感谢。
标签: linux bash shell unix automation