在终端中,如何在不同文件上多次重复命令?

Ala*_*n C 13 command-line

在终端中,我想使用 ffmpeg2theora 将某个目录中的所有 .MOV 文件转换为 .ogv 文件。但是,以下方法不起作用:

ffmpeg2theora *.MOV
Run Code Online (Sandbox Code Playgroud)

有没有一种在不同文件上多次重复命令的好方法?

谢谢!

Mar*_*erg 20

如果使用默认 shell (bash),则可以使用以下命令:

for file in *.MOV; do ffmpeg2theora "$file"; done
Run Code Online (Sandbox Code Playgroud)

  • 这更有可能在没有斜杠的情况下工作:`for file in *.[Mm][Oo][Vv]; 做 ffmpeg2theora "$file"; 完成` (5认同)

Mic*_*jer 11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

要限制递归深度,您可以添加-maxdepth 1before-exec

  • 只是为了说明这个答案和我的答案之间的区别:使用 find 还会在子目录中查找文件,`for file in *.MOV`​​ 解决方案只会在当前目录中查找。 (2认同)