2009-12-01 8 views
1

디렉토리 목록에서 특정 기준 (-M, 수정 일 수)과 일치하지만 하위 디렉토리에는없는 모든 파일을 어떻게 찾을 수 있습니까? Perl에서 디렉토리의 모든 파일을 가져올 수 있습니까 (서브 디렉토리는 아님)?

내가 찾기 :: 파일을 사용하고 싶어하지만 항상 너무 하위 디렉토리로 이동합니다 것 같습니다. grep와 함께

+0

"특정 기준"이란 무엇입니까? 크기, 사용 권한, 이름, 날짜 등은 무엇입니까? – innaM

+0

@Manni : 당신이 원하지 않는 경우 -M, 일 –

답변

8
@files = grep { -f && (-M) < 5 } <$_/*> for @folders; 
+7

같은 파일에 여러 -X 년대를하고있는 수정 나이, 같은 통계 반환 – ysth

2

사용 readdir 또는 File::Slurp::read_dir.

#!/usr/bin/perl 

use strict; 
use warnings; 

use File::Slurp; 
use File::Spec::Functions qw(canonpath catfile); 

my @dirs = (@ENV{qw(HOME TEMP)}); 

for my $dir (@dirs) { 
    print "'$dir'\n"; 
    my @files = grep { 2 > -M and -f } 
       map { canonpath(catfile $dir, $_) } read_dir $dir; 
    print "$_\n" for @files; 
} 
-1

당신은 파일을 설정할 수 있습니다 :: 찾기 :: 자두를 '원'함수 내에서 디렉토리 트리를 건너 뜁니다. $ File :: Find :: prune = 1 if (-d & & $ File :: Find :: name ne ".")와 같은 것을 추가하십시오.

+5

를 재사용하기 위해 모든하지만 첫 번째에있는 "파일 이름"으로 _ 사용할 수 있습니다 깊이 우선 검색을 수행하고 깊이 검색 도구를 사용하지 마십시오. :) –

관련 문제