【问题标题】:Recursive Search for *.MKV Bash [duplicate]递归搜索 *.MKV Bash [重复]
【发布时间】: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


【解决方案1】:

感谢@kvantour 的指导:

shopt -s globstar
for f in /mnt/usbhdd/**/*.mkv; do ls "$f"; done

find /mnt/usbhdd/ -name '*.mkv'

最终解决方案:

shopt -s globstar;
for f in /mnt/usbhdd/**/*.mkv
do 
    ffmpeg -i "$f" -c:v libx264 -preset veryfast -crf 22 -profile:v main -level:v 4.0  -c:a aac -ac 2 -ab 320k "${f%.*}.m4v"
done   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多