script BASH para capturar alterações em um arquivo maior que 150MB

0

Precisa de algumas ideias aqui. Eu estava usando algo ao longo das linhas de se $ [$ x-y y > 1500] então etc .... para detectar o tamanho das alterações em um arquivo. Percebi que isso não funcionaria, pois o tamanho dos arquivos poderia aumentar ou diminuir, o que poderia resultar em um número negativo. Existe uma maneira de usar o valor absoluto de x-y?

    
por morgro269 10.05.2017 / 03:22

2 respostas

0

Eu fiz isso. Eu crio um novo arquivo (com o sufixo ".new"), mas antes de substituir o antigo, eu verificaria a diferença de tamanho dos arquivos e abortaria (enviando algum tipo de notificação, como e-mail) se houver muitas alterações. / p>

Eu geralmente faço isso em perl, mas bash seria semelhante.

$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;
  }
}
    
por 10.05.2017 / 03:39
0
diff=$((x - y)
diff=$(( (diff > 0) ? $diff : -1*$diff ))
if [ $diff -gt 1500 ]
then
  echo do something
fi
    
por 12.05.2017 / 04:05