如何创建仅在大于指定文件大小的文件上执行的 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)
添加到限定符以包含点文件。
我想将大于 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)
添加到限定符以包含点文件。