检查文件是否小于另一个文件

检查文件是否小于另一个文件

我正在尝试在备份脚本中创建一个检查,以便如果要备份的新文件小于旧备份,我将退出脚本,以避免备份损坏的数据。

但我找到的所有关于此问题的答案都是关于检查文件是否大于/小于字节值而不是另一个文件

答案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

相关内容