2010-08-05 6 views
0

나는 그 안에 파일과 서브 디렉토리의 수와 같은 디렉토리의 세부 사항을 얻고 싶다.펄 스크립트를 사용하여 디렉토리 속성을 얻는 방법은 무엇입니까?

예! 명령을 실행하기 위해 역 추적을 사용하는 리눅스 컴퓨터에서 쉽게 할 수 있습니다. 그러나 스크립트 플랫폼을 독립적으로 만들 수있는 방법이 있습니다.

감사 : 당신은 당신이 Path::Class 사용을 고려할 수있는 권한

답변

3

. 이것은 모두 당신에게 쉬운 인터페이스를 제공하고 ("플랫폼"의 "\"과 "/"의 차이를 포함하여) 모든 크로스 플랫폼을 처리합니다.

use Path::Class qw(file dir); 

    my $dir = dir("/etc"); 

    my $dir_count = 0; 
    my $file_count = 0; 

    while (my $file = $dir->next) { 
     # $file is a Path::Class::File or Path::Class::Dir object 

     if ($file->is_dir) { 
     $dir_count++; 
     } else { 
     $file_count++; 
     } 

     my $mode = $file->stat->mode; 
     $mode = sprintf '%o', $mode; # convert to octal "0755" form 
     print "Found $file, with mode $mode\n"; 
    } 
    print "Found $dir_count dirs and $file_count files\n"; 
+1

내 Path :: Class 예제와 달리이 코드는 Perl 자체와 함께 배포되는 코어 모듈 만 사용하려는 경우 좋은 해결책입니다. –

2

을 얻기 위해 디렉토리의 내용을 얻기 위해 디렉토리 핸들 (opendirreaddir)를 사용하고 File::stat

+0

파일을 stat 할 수 없다면? 그런 다음 undef-> mode는 작동하지 않지만 $ file_count에서 이미 계산했습니다. – oylenshpeegul

+0

@oslenshpeegul : 어떤 상황에서 파일을 통계 할 수 없습니까? 방금 디렉토리의 내용을 읽었습니다 ... –

관련 문제