Сценарий BASH для отслеживания изменений в файле размером более 150 МБ

Здесь нужны идеи. Я использовал что-то вроде если $ [$ x- $ y> 1500] потом и т.д .... для определения размера изменений в файле. Я понял, что это не сработает, поскольку размеры файлов могут увеличиваться или уменьшаться, что может привести к отрицательному числу. Есть ли способ использовать абсолютное значение x-y?

0
10.05.2017, 04:22
2 ответа
diff=$((x - y)
diff=$(( (diff > 0) ? $diff : -1*$diff ))
if [ $diff -gt 1500 ]
then
  echo do something
fi
0
28.01.2020, 04:46

Я сделал это. Я создаю новый файл (с суффиксом at «.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;
  }
}
0
28.01.2020, 04:46

Теги

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