Perl의 로그 파일 확인 유효성 검사

Perl의 로그 파일 확인 유효성 검사

"FDP_RecordLength_Error_02202018_020107.log" "FDP_HeaderOrTrailerRecord_Error_02202018_020107.log" "FDP_DetailRecord_Error_02202018_020107.log" 및 기타 로그 파일도 있습니다. 모든 로그의 파일 크기를 확인하고 싶습니다. 로그 파일 크기가 0이면 "로그 파일 크기가 0입니다." 또는 "로그 파일 크기가 0이 아닙니다."가 인쇄됩니다. Perl에서 이 작업을 어떻게 수행할 수 있나요? 누구든지 나를 도와줄 수 있나요?

답변1

다음을 사용할 수 있습니다 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: {}" \;

또는 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";
                }
        }
}

관련 정보