bash - 在 Bash 中一次循环两个变量

标签 bash loops command-line ffmpeg muxer

我在一个目录中有两种具有相同文件名的文件类型:

file1.ts
file1.ec3
file2.ts
file2.ec3

我需要创建一个循环来一次处理一对文件(file1.ts + file1.ec3)。
然后需要用第二对(file2.ts + file2.ec3)重新启动循环。

这是我的代码:
for i in *.ts; do
    for e in *.ec3; do
        ffmpeg -i "$i" -i "$e" -map 0:v -map 1:a -codec copy "${i%.ts}_DD+.ts";
    done;
done

但是当第一个周期结束时,它会尝试处理 file1.ts + file2.ec3 并停止一切......

我怎样才能让它正常工作?

最佳答案

尝试这个:

for file in *.ts; do
    [ -f "${file%.ts}.ec3" ] &&
        ffmpeg -i "$file" -i "${file%.ts}.ec3" -map 0:v -map 1:a \
            -codec copy "${file%.ts}_DD+.ts"
done

关于bash - 在 Bash 中一次循环两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141995/

相关文章:

linux - 重命名以数值结尾的文本文件

c# - For 循环,应用程序挂起

MySQL命令行字符

shell - 如何删除带有特殊字符的文件

ruby-on-rails - ubuntu linux,新的终端窗口无法识别已安装的 gem

json - 使用 bash 发送 json HTTP post

bash - 如何使用 ffmpeg 工作获取 bash 脚本以将 mp3 转换为 wav?

javascript - 我正在创建乘法表。需要帮助在每个循环之间创建新行

Python循环按天计算按月分组的总数

bash - 在目录路径中用空格列出 bash 中的文件的问题