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

関連情報