我有视频文件"test.mp4",我正在使用wget下载。它超过 100MB+。我想继续检查文件大小,并在每 +2MB 或一些自定义限制递增后对其执行某些命令。目前我正在尝试使用嵌套的 ifs 和 while 循环:
while true;
do
if [[ $(find /home/user/test.mp4 -type f -size +200k 2>/dev/null);
then
##### executre some commands
while true;
do
if [[ $(find /home/user/test.mp4 -type f -size +2000k 2>/dev/null) ]];
then
##### executre some commands
while true;
do
if [[ $(find /home/user/test.mp4 -type f -size +4000k 2>/dev/null) ]];
then
##### executre some commands
while true;
do
if [[ $(find /home/user/test.mp4 -type f -size +6000k 2>/dev/null) ]];
then
##### executre some commands
##### I have to write while loops like this for ever -----------
break;
fi
done;
break;
fi
done;
break;
fi
done;
break;
fi
done;
但我必须手动做。有没有办法它不断检查,我可以告诉一些限制,然后它可以执行命令?
这可能会
在bash
中为您解决问题。它基本上不断检查文件大小并将其与参考编号进行比较。如果文件大小大于引用,则可以执行该命令。命令执行后,您可以更新引用大小。
# delta jump size
dsize=$(( 2*1024*1024*1024 )) # delta jump size (2Mb)
# current file size
fsize=$(stat --printf="%s" /home/user/test.mp4)
# reference size, set to the next upcomming n*dsize
osize=$(( ((fsize/dsize)+1)*dsize ))
while true; do
# get file size in bytes
fsize=$(stat --printf="%s" /home/user/test.mp4)
# check if file size is bigger then reference size
if (( fsize > osize )); then
## execute some commands
# increment reference size
osize=$(( osize + dsize ))
fi
sleep 1
done
利用此脚本,可以通过以下方式改进此脚本。请注意,在执行的命令运行期间,您已经下载了两倍以上的增量大小。您可能有兴趣将增量引用大小替换为
fsize=$(stat --printf="%s" /home/user/test.mp4)
osize=$(( ((fsize/dsize)+1)*dsize ))