我正在使用mp4box
它来移动 MP4 文件上的 MOOV 原子。
问题是,我将在给定的文件夹中拥有 6 个文件,并且我不想inter 500
分别运行该命令六次。
是否可以mp4box -inter 500 *
在目录中执行类似操作,让命令对该文件夹中的所有 mp4 文件运行?
答案1
您可以使用-exec
选项find
。此处,'{}'
替换为每个 MP4 文件的文件名。这将处理所有类型的文件名,甚至包含空格或换行符的文件名。您需要提供-maxdepth 1
以仅搜索当前目录。
find . -iname "*.mp4" -maxdepth 1 -exec mp4box -inter 500 '{}' \;
另一种更复杂的方法是将 的输出通过管道传输到find
带有 的循环中read
。这里,每个文件都由 字符分隔NUL
,您需要告诉read
根据此字符拆分输入,这是通过 实现的-d ''
。您还需要引用变量"$file"
,以便保留名称中的空格或通配符。
find . -iname "*.mp4" -maxdepth 1 -print0 | while IFS= read -d '' -r file; do mp4box -inter 500 "$file"; done