我有一个脚本检查0大小,但我认为必须有一个更容易的方法来检查文件大小。也就是说file.txt通常为100k;如何使脚本检查如果它小于90k(包括0),并使它做wget一个新的副本,因为文件已损坏在这种情况下。
我目前使用的..
if [ -n file.txt ] then echo "everything is good" else mail -s "file.txt size is zero,please fix. " myemail@gmail.com < /dev/null # Grab wget as a fallback wget -c https://www.server.org/file.txt -P /root/tmp --output-document=/root/tmp/file.txt mv -f /root/tmp/file.txt /var/www/file.txt fi
[-n file.txt]不检查其大小,它检查字符串file.txt是非零长度,因此它将始终成功。
原文链接:https://www.f2er.com/bash/392681.html如果你想说“size is non-zero”,你需要[-s file.txt]。
要获取文件的大小,可以使用wc -c来获取以字节为单位的大小(文件长度):
file=file.txt minimumsize=90000 actualsize=$(wc -c <"$file") if [ $actualsize -ge $minimumsize ]; then echo size is over $minimumsize bytes else echo size is under $minimumsize bytes fi
在这种情况下,它听起来像这是你想要的。
但是,如果你想知道文件使用了多少磁盘空间,你可以使用du -k来获取大小(使用的磁盘空间)(千字节):
file=file.txt minimumsize=90 actualsize=$(du -k "$file" | cut -f 1) if [ $actualsize -ge $minimumsize ]; then echo size is over $minimumsize kilobytes else echo size is under $minimumsize kilobytes fi
如果你需要更多的控制输出格式,你也可以看看stat。在Linux上,你可以从stat -c’%s’file.txt和BSD / Mac OS X开始,像stat -f’%z’file.txt。