gpt4 book ai didi

linux - 我的 linux bash 脚本不会遍历所有文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:24 27 4
gpt4 key购买 nike

我是一个菜鸟,正在尝试为 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 文件后它会停止

提前致谢哈芬克

最佳答案

您似乎正在使用这个 transcode-video脚本。它基于 HandbrakeCLI 和 mplayer,两者都倾向于过度使用 stdin,从而在第一次迭代后打破 while read 循环(ex1ex2ex3ex4)。

您可以通过重定向来自 /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

关于linux - 我的 linux bash 脚本不会遍历所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427644/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com