如何创建仅在大于指定文件大小的文件上执行的 for 循环?

How do I create a for loop that only executes on files larger than a specified filesize?

我想将大于 500MB 的 mp4 文件拆分成小于 500MB 的片段。

如何创建 for 循环来遍历文件目录,运行

mp4box -splits 500000 input.mp4

每个文件大于 500 MB?

(循环部分没有问题。文件大小部分的测试是。)

您或许可以使用 find,例如:

for file in $( find . -size +500M )
do
    echo $file
done

但我不知道 find 是否适用于 macos。

可以在循环中使用stat获取文件大小:

stat -c '%s' filename.txt

注意:大小以字节为单位。

您可以为此使用 find

find ./ -name "*.mp4" -size +500M -exec mp4box -splits 500000 {} \;

(我没有测试,但应该是这样的)

zsh:

for f ( *.mp4(.Lk+500000) ) mp4box -splits 500000 $f

Glob 限定符:(.) 匹配普通文件,(Lk+500000) 匹配大小大于 500000 KB 的文件。将 (D) 添加到限定符以包含点文件。