ファイルが他のファイルより小さいことを確認する

ファイルが他のファイルより小さいことを確認する

バックアップする新しいファイルが以前のバックアップよりも小さい場合は、破損したデータのバックアップを防ぐためにスクリプトを終了するようにバックアップスクリプトからスキャンを作成しようとします。

しかし、この質問に対する私が見つけたすべての答えは、ファイルが他のファイルではなくバイト値より大きいか小さいことを確認することです。

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

statを使用してstat --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

関連情報