我是 Linux 新手,我想在文件上循环对文件夹中的所有文件执行相同的命令,该命令包括文件名:
ffmpeg -i REC_2019_08_31_11_52_30_F.MP4 REC_2019_08_31_11_52_30_F.ass
我尝试过
for f in files do ''command'' done
但它不起作用。
答案1
循环转换当前目录下的for
每个文件.MP4
参数扩展文件扩展名的改变如下:
for i in *.MP4; do
ffmpeg -i "$i" "${i/%MP4/ass}"
done
${i/%MP4/ass}
扩展为当前处理的文件名,并将最后一次出现的“MP4”替换为“ass”。实现相同目的的另一种方法是从最后一个点开始剪切字符串并添加新的扩展名:${i%.*}.ass
在多次且可能持续的操作的情况下,我非常喜欢使用GNUparallel
,通过并行运行作业可以大大提高速度。上面的循环parallel
将简单地为:
parallel ffmpeg -i {} {.}.ass ::: *.MP4