【发布时间】:2016-11-05 04:21:29
【问题描述】:
我是一个菜鸟,正在尝试为 Plex 构建一个后处理类型脚本。 在一些同事和谷歌的帮助下,我整理了以下脚本来将 mkv 文件转换为 mp4 文件。
该脚本是“找到”媒体目录中的所有文件并将它们转换为 mp4 文件。
它找到第一个,正确处理并退出 - 为什么? 我需要帮助让这个脚本循环。 我已经用这种方式编写了古怪的 find 命令,因此“find”命令将捕获带有空格的文件名,而 dirname 命令将起作用。
脚本---
find -L "/media/4tbdisk/test/" -type f -name '*.mkv' -print0 | while IFS= read -r -d $'\0' FILE; do
echo "filename is ---" "$FILE";
DIR=$(dirname "${FILE}");
echo "directory is --" $DIR;
transcode-video --mp4 --quick "$FILE" --output "$DIR";
done
脚本会找到一个 mkv 文件并对其进行处理,但不会继续循环处理其余部分。 如果它找到的第一个文件已经被处理,“转码”脚本会说“输出文件存在......”并将继续到下一个,但在创建第一个 mp4 文件后它会停止
提前致谢 呵呵
【问题讨论】:
-
在这里工作。我怀疑简化你的第一行会更好:
find -L "/media/4tbdisk/test/" -type f -name '*.mkv' | while read -r FILE; do -
作为第一个测试,您可以尝试单独运行
find -L "/media/4tbdisk/test/" -type f -name '*.mkv'(不运行-print0)以查看找到了多少文件 -
试试
transcode-video < /dev/null .....。 ffmpeg 和 mencoder 会吃掉标准输入并导致您所描述的问题,而且这个工具很可能是基于其中之一 -
find 命令有效并且会返回几个文件。