我很懒 :) 所以我想在我的网络上自动化一些事情。目前我正在运行一个脚本,该脚本会自动下载我每周观看的系列。根据下载的内容,另一个脚本会在网络上搜索字幕。但是,有些下载带有字幕,因此无需搜索字幕。如果文件有正确的字幕,我想检查每次下载的字幕并得到通知(或更好地移动文件)。
我从以下内容开始:
find /volume2/Downloads/ -type f -mmin -30 | while IFS= read -r file; do
ffmpeg -i "${file}"
done
这有效,并向我显示了 ffmpeg 命令对每个超过 30 分钟的文件的输出。我想使用 ffmpeg 给出的结果,以便当输出中出现某些字符时,我会通过邮件收到通知。然而,我的 Linux 脚本编写技能停留在我得到的脚本上。我是一名网络开发人员,所以我了解这样的脚本背后的逻辑,但不了解具体的代码或命令。
我正在寻找的角色:
这可以做到吗?
编辑:
我做了更多的研究并对我的脚本进行了一些更改:
find /volume2/Downloads/ -type f -mmin -60 | while IFS= read -r file; do
if ffmpeg -i "${file}" | grep -q '(dut): Subtitle:'; then
echo "matched"
fi
done
它不是“匹配”而是显示 ffmpeg 输出,但这可能是朝着正确方向迈出的一步?
最佳答案
您需要将标准错误重定向到标准输出。
find /volume2/Downloads/ -type f -mmin -60 | while IFS= read -r file; do
if ffprobe -i "${file}" 2>&1 | grep -q '(dut): Subtitle:'; then
echo "matched"
fi
done
unix stackexchange 中讨论了为您的场景使用管道的问题。
关于ffmpeg - 对脚本输出做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091585/