150MB보다 큰 파일의 변경 사항을 캡처하는 BASH 스크립트

150MB보다 큰 파일의 변경 사항을 캡처하는 BASH 스크립트

여기에 몇 가지 아이디어가 필요합니다. 파일 변경 크기를 감지하기 위해 if $[$x-$y>1500] then 등을 사용하고 있습니다. 파일 크기가 증가하거나 감소하여 음수가 발생할 수 있기 때문에 이것이 작동하지 않는다는 것을 알고 있습니다. xy의 절대값을 사용하는 방법이 있나요?

답변1

난 끝냈어. 새 파일(".new" 접미사 포함)을 생성하지만 이전 파일을 교체하기 전에 파일 크기 차이를 확인하고 변경 사항이 너무 많으면 중단합니다(일부 유형의 알림(예: 메일) 보내기).

저는 보통 Perl에서 이 작업을 수행하지만 bash도 비슷합니다.

$file="file_being_updated";
$new=".new";

if ( -f $file ) {
  my $percent_diff = abs( 100 - 100*(-s "$file$new")/(-s $file) );
  if (  $percent_diff > 20 ) {   # more that this to different!
    printf STDERR "File \"$file$new\" differs by more that 20%%! (%.1f%%)\n",  $percent_diff;
    printf STDERR "-------------- ABORTING REPLACMENT -----------\n";
    exit 10;
  }
}

답변2

diff=$((x - y)
diff=$(( (diff > 0) ? $diff : -1*$diff ))
if [ $diff -gt 1500 ]
then
  echo do something
fi

관련 정보