728x90
반응형
윈도우 파일서버에서 100MB 가 넘는 파일을 찾기 위해서 디렉토리를 순회하는 방법을 찾아보았다. 보통은 File-Find 를 많이 쓰지만, 1TB이상 사용하고 있는 드라이브에서는 검색 도중에 Out of memory 메시지와 함께 멈추는 현상이 있었고, 대신 File-Find-Object 로 해보니, 아주 깔끔하게 검색이 되었다.
File-Find
- 일반적으로 많이 알려진 방법인데, 1TB 용량의 드라이브 검색시 죽는 현상을 발견하였다.
# 100MB 넘는 파일 목록 출력 use strict; use warnings; use File::Find; my $limited_size = 100_000_000; # 100MB find(\&process_file, ("P:/")); sub process_file { my $file = $File::Find::name; return unless -e $file; return unless -f $file; return unless -r $file; return unless -R $file; return if -s $file < $limited_size; print "$file\n"; }
File-Find-Object
- File-Find 를 객체지향적으로 재구성한 모듈으로, 대량의 디렉토리,파일에도 잘 동작한다.
- 별도로 모듈을 설치해야하는 번거로움이 있긴하다.
C:\> ppm install File-Find-Object
- 예제 코드는 다음과 같다.
# 100MB 넘는 파일 목록 출력 use strict; use warnings; use File::Find::Object; my $limited_size = 100_000_000; # 100MB my $tree = File::Find::Object->new({}, ("P:\\")); while(my $file = $tree->next()) { next unless -e $file; next unless -f $file; next unless -r $file; next unless -R $file; next if -s $file < $limited_size; print "$file\n"; }
728x90
반응형
'Programming > Perl' 카테고리의 다른 글
Perl : 모듈 관리 (0) | 2012.11.05 |
---|---|
Perl : StrawberryPerl 에서 PAR::Packer 설치하기 (0) | 2012.05.14 |
perl 스크립트를 통한 해킹 사고 (0) | 2011.06.23 |
(Perl) perlbrew 를 이용하여 다양한 버전의 Perl을 설치해보자! (0) | 2011.05.23 |
(Perl) (Debian-Perl) Linux 에서 MS-SQL 연결하기 (0) | 2011.03.24 |
댓글