Проверить, меньше ли файл, чем другой файл

В принципе smartdиспользует определение в /etc/smartd.confдля DEVICESCANили закодированных путей жесткого -диска из /dev/, если вы их добавили. Таким образом, удаленные диски обычно должны автоматически пропускаться.

Может помочь удаление файла состояния для этих дисков в /var/lib/smartmontools/.

0
01.07.2021, 10:08
2 ответа

Вы можете использовать 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
28.07.2021, 11:21

Вы можете использовать статистику stat --format=%s <file>, чтобы получить размер файла а затем просто сравните целочисленные значения, используя встроенные -в -gt и -eq операторы. Пример файла -small.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
1
28.07.2021, 11:21

Теги

Похожие вопросы