我正在尝试在备份脚本中创建一个检查,以便如果要备份的新文件小于旧备份,我将退出脚本,以避免备份损坏的数据。
但我找到的所有关于此问题的答案都是关于检查文件是否大于/小于字节值而不是另一个文件
答案1
您可以使用它stat
来获取文件大小。用于-c
指定格式并用作%s
获取文件大小(以字节为单位)的格式。
#! /bin/bash
file=...
backup=...
file_size=$(stat -c %s "$file")
backup_size=$(stat -c %s "$backup")
if (( file_size > backup_size )) ; then
echo "$file" is bigger.
fi
答案2
您可以使用 statstat --format=%s <file>
获取文件的大小,然后使用内置 -gt 和 -eq 运算符简单地比较整数值。示例 file-smaller.sh 如下所示:
#!/usr/bin/env sh
file1_size="$(stat --format=%s file1)"
file2_size="$(stat --format=%s file2)"
if [ "$file1_size" -eq "$file2_size" ]
then
printf "Files have equal sizes\n"
elif [ "$file1_size" -gt "$file2_size" ]
then
printf "file1 is larger\n"
else
printf "file2 is larger\n"
fi
用法:
$ echo abc >> file1
$ echo abcd >> file2
$ ./file-smaller.sh
file2 is larger
$ cp file1 file2
$ ./file-smaller.sh
Files have equal size