[英]my linux bash script will not loop though all files
我是菜鸟,正在尝试为Plex构建后处理类型脚本。 在一些同事和Google的帮助下,我整理了以下脚本将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文件后,它将停止
在此先感谢haeffnkr
您似乎正在使用此转码视频脚本。 它基于HandbrakeCLI和mplayer,它们都有过度消耗stdin的趋势,从而在第一次迭代( ex1 , ex2 , ex3 , ex4 )后的读取循环中中断。
您可以通过从/dev/null
重定向输入来避免这种情况,这样它就不会占用任何循环输入:
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 < /dev/null --mp4 --quick "$FILE" --output "$DIR";
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.