在 Bash 中一次循环两个变量
Loop with two variables at once in Bash
我在一个目录中有两种文件名相同的文件类型:
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
我在一个目录中有两种文件名相同的文件类型:
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