在Bash中一次循环两个变量

时间:2016-10-19 21:43:07

标签: 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并制动所有东西......

如何让它正常工作?

1 个答案:

答案 0 :(得分:3)

试试这个:

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