validação de verificação de arquivo de log em Perl

0

Eu tenho "FDP_RecordLength_Error_02202018_020107.log" "FDP_HeaderOrTrailerRecord_Error_02202018_020107.log" "FDP_DetailRecord_Error_02202018_020107.log" e outros arquivos de log também. Eu quero verificar o tamanho do arquivo para todos os logs. Se o tamanho do arquivo de log for zero, ele imprimirá "O arquivo de log está tendo tamanho zero" ou "Arquivo de log não está tendo tamanho zero". Como posso fazer isso em Perl? Alguém pode me ajudar?

    
por Deep Mukherjee 20.02.2018 / 10:20

1 resposta

4

Você pode usar apenas find :

find . -type f -size 0 -exec echo "The logfile has a 0 size: {}" \;

find . -type f ! -size 0 -exec echo "The logfile does not have a 0 size: {}" \;

Ou perl :

#!/usr/bin/perl --
use File::Find;

# directory to start looking for log files
my $dir = '/tmp/a';

# search base directory and call subroutine for each file found
find(\&size_check, $dir);

# subroutine to be called by find
sub size_check{
        # check filename matches regex and is a file (not directory)
        if($_ =~ /^.*\.log$/ and -f $_){
                # call stat and put data into an array
                my @stat = stat($_);

                # check to see if the size is zero
                if($stat[7] == 0){
                        print $_ . " has a size of 0\n";
                }else{
                        print $_ . " has a " . $stat[7] . " size\n";
                }
        }
}
    
por 20.02.2018 / 10:29

Tags