파일이 다른 파일보다 작은지 확인

파일이 다른 파일보다 작은지 확인

백업할 새 파일이 이전 백업보다 작은 경우 손상된 데이터 백업을 방지하기 위해 스크립트를 종료하도록 백업 스크립트에서 검사를 생성하려고 합니다.

하지만 이 질문에 대해 내가 찾은 모든 대답은 파일이 다른 파일이 아닌 바이트 값보다 크거나 작은지 확인하는 것입니다.

답변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

관련 정보