BASH 脚本捕获对大于 150MB 的文件的更改

BASH 脚本捕获对大于 150MB 的文件的更改

这里需要一些想法。我正在使用类似 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

相关内容