Perl에는 디렉토리의 모든 파일과 디렉토리를 나열하는 함수가 있습니까? Java가 이것을 수행하기 위해 File.list()
을 가지고 있다는 것을 기억합니까? Perl에 비슷한 메소드가 있습니까?Perl을 사용하여 디렉토리의 모든 파일을 나열하려면 어떻게합니까?
답변
당신은 주어진 디렉토리의 내용을 얻고 싶은 경우에, 단지 그것 (즉 하위 디렉토리), 가장 좋은 방법은 사용하는 것입니다했던 opendir/readdir은/closedir :
는opendir my $dir, "/some/path" or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;
은 또한 사용할 수 있습니다
my @files = glob($dir . '/*');
내 견해로는 글로브가 꽤 복잡하지 않기 때문에 (주로 결과를 자동으로 필터링 할 수 있음) 매우 복잡한 작업이므로 디렉터리의 모든 요소를 얻는 것이 너무 간단한 작업으로 보입니다. 당신이 디렉토리 및 하위 디렉토리의 모든 컨텐츠를 취득해야하는 경우 반면에
는 기본적으로 하나 개의 표준 솔루션이 :use File::Find;
my @content;
find(\&wanted, '/some/path');
do_something_with(@content);
exit;
sub wanted {
push @content, $File::Find::name;
return;
}
이 작업을 수행해야합니다.
my $dir = "bla/bla/upload";
opendir DIR,$dir;
my @dir = readdir(DIR);
close DIR;
foreach(@dir){
if (-f $dir . "/" . $_){
print $_," : file\n";
}elsif(-d $dir . "/" . $_){
print $_," : folder\n";
}else{
print $_," : other\n";
}
}
당신이했던 opendir (실패했던 opendir 확인 ... 또는 "오류 메시지를 죽게 : $! "). 또한, 나는 무엇인가 놓치고 있냐? Win32 :: GUI :: DoEvents()는 무엇을하고 있습니까? (나는 그 질문에 관련된 어떤 것도 보지 못한다.) – Telemachus
이것은 내가하기 싫은, 또는 쉽게 할 수있는 무언가를위한 정규 표현식을 기억하고 싶지 않은 가장 좋은 방법이다. 나는 이것을 list ($ dir ,"에프"); 파일 "d"를 디렉토리로 보내 주셔서 감사합니다. – Geomorillo
readdir() 않습니다.
확인 http://perldoc.perl.org/functions/readdir.html
opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
closedir DIR;
또는 File::Find
use File::Find;
finddepth(\&wanted, '/some/path/to/dir');
sub wanted { print };
존재하는 경우 그것은 하위 디렉토리를 통해 이동합니다.
이 모든 (하위 디렉토리 포함)가 나열됩니다 디렉토리에서 당신 순서대로, 그리고 특성과 함께 지정하십시오. 나는 이것을하기 위해 무언가를 찾고 며칠을 보냈고, 나는 전체 토론에서 그리고 나 자신의 일부를 가져다가 함께 정리했다. 즐겨!!
#!/usr/bin/perl --
print qq~Content-type: text/html\n\n~;
print qq~<font face="arial" size="2">~;
use File::Find;
# find(\&wanted_tom, '/home/thomas/public_html'); # if you want just one website, uncomment this, and comment out the next line
find(\&wanted_tom, '/home');
exit;
sub wanted_tom {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat ($_);
$mode = (stat($_))[2];
$mode = substr(sprintf("%03lo", $mode), -3);
if (-d $File::Find::name) {
print "<br><b>--DIR $File::Find::name --ATTR:$mode</b><br>";
} else {
print "$File::Find::name --ATTR:$mode<br>";
}
return;
}
아하, 내 눈! – javs
당신이 나를 좋아하는 사람이라면 File::Slurp 모듈을 사용하는 것이 좋습니다. read_dir 기능의 의지는, 배열에 디렉토리 내용을 읽어 점을 제거하고, 필요한 접두사 파일이 절대 경로
에 대한 디렉토리와 함께 반환하는 경우my @paths = read_dir('/path/to/dir', prefix => 1) ;
- 1. Perl을 사용하여 특정 이름 패턴의 디렉토리 아래에 파일을 나열하려면 어떻게합니까?
- 2. Tomcat의 폴더에있는 모든 파일을 나열하려면 어떻게합니까?
- 3. 원격 컴퓨터에 연결하고 디렉터리의 모든 파일을 나열하려면 어떻게합니까?
- 4. 사용 가능한 모든 컨텍스트 변수를 나열하려면 어떻게합니까?
- 5. Windows에서 실행중인 모든 프로세스를 나열하려면 어떻게합니까?
- 6. GAC에 등록 된 모든 어셈블리를 나열하려면 어떻게합니까?
- 7. Django에서 모든 양식 관련 오류를 나열하려면 어떻게합니까?
- 8. Oracle SQL에서 스키마의 모든 테이블을 나열하려면 어떻게합니까?
- 9. C#을 사용하여 컴퓨터의 원격 공유 파일을 나열하려면 어떻게합니까?
- 10. 디렉토리의 모든 파일을 bash를 사용하여 하나로 병합하십시오.
- 11. WMI를 사용하여 장치 유형을 나열하려면 어떻게합니까?
- 12. C# HTTP 디렉토리의 모든 파일을 다운로드하십시오.
- 13. 디렉토리의 모든 파일을 일괄 처리합니다.
- 14. 디렉토리의 모든 파일을 개별적으로 실행
- 15. Perl을 사용하여 디렉토리에 일반 파일 목록 만 표시하려면 어떻게합니까?
- 16. SQLite에서 특정 테이블의 사용 가능한 모든 뷰를 나열하려면 어떻게합니까?
- 17. MATLAB에서 전역 변수를 나열하려면 어떻게합니까?
- 18. Perl을 사용하여 여러 파일을 전자 메일에 첨부하려면 어떻게합니까?
- 19. Perl을 사용하여 파일을 다운로드하려면 어떻게해야합니까?
- 20. 배포 된 모든 jax-ws 웹 서비스를 나열하려면 어떻게합니까?
- 21. show 페이지에서 다른 레코드에 속한 모든 레코드를 나열하려면 어떻게합니까?
- 22. Android 모바일에 설치된 모든 응용 프로그램을 나열하려면 어떻게합니까?
- 23. libcurl을 사용하여 디렉토리의 모든 파일 다운로드
- 24. yardoc을 사용하여 문서화되지 않은 모듈/클래스/상수/메소드를 나열하려면 어떻게합니까?
- 25. 목록 상자에서 선택한 디렉토리의 텍스트 파일을 나열하는 방법은 무엇입니까?
- 26. afconvert를 사용하여 디렉토리의 모든 파일을 wav에서 caf로 변환하려면 어떻게해야합니까?
- 27. Wordpress에서 특정 태그가있는 항목을 모두 나열하려면 어떻게합니까?
- 28. 디렉토리의 모든 PHP 파일을 포함시키는 방법()
- 29. Netbeans PHP - 디렉토리의 모든 파일을 실행하는 방법
- 30. 하스켈에서 디렉토리의 모든 파일을 읽는 방법
나는 항상 readdir이 단지 전체 경로가 아닌 상대적인 파일명의 목록을 반환한다는 것을 잊어 버립니다! –
이 작업을 위해 globbing을 사용하지 않으셔서 감사합니다. 이것에 대한 globbing 사용의 또 다른 단점은 숨겨진 파일 (점으로 시작하는 파일)을 찾지 못한다는 것입니다. – josch