PHP, 180 바이트
- 첫 번째 인수 : 경로에는 슬래시 (또는 백 슬래시)가 있어야합니다.
- 두 번째 주장 : 수준은 기본적으로 다음
NULL
과 같이 해석 0
됩니다 str_repeat
. 제공하지 않으면 경고를 던집니다
function d($p,$e){$s=opendir($p);echo$b=str_repeat("\t",$e++),$e?basename($p)."/":$p,"
";while($f=readdir($s))echo preg_match("#^\.#",$f)?"":is_dir($p.$f)?d("$p$f/",$e):"$b\t$f
";}
- 디스플레이 숨겨진 파일과 디렉토리 만 같이 Recurse 숨겨진 디렉토리가없는
괄호 추가 is_dir(...)?d(...):"..."
출력 (+2)에서 숨겨진 항목을 제거 할 수는
교체 "#^\.#"
로 #^\.+$#
(+2) / 디스플레이 숨겨진 항목을 재귀하지만 항목을 점 건너 뛰기
- 디렉토리가 너무 깊게 중첩되면 오류가 발생할 수 있습니다.
closedir($s);
최종 }
수정 전에 삽입 (+13)
- 디렉토리에 이름이없는 항목이 포함 된 경우 실패 할 것입니다
false!==
(+8).
glob, 182 바이트 (미래 PHP에서 아마도 163)
function g($p,$e){echo$b=str_repeat("\t",$e),$e++?basename($p)."/":$p,"
";foreach(glob(preg_replace("#[*?[]#","[$1]",$p)."*",2)as$f)echo is_dir($f)?g($f,$e):"$b\t".basename($f)."
";}
- 숨겨진 파일 / 디렉토리를 표시하거나 재귀하지 않습니다
2
의미 GLOB_MARK
처럼, 모든 디렉토리 이름에 슬래시를 추가합니다,ls -F
preg_replace
탈출 글로브 특수 문자는
내가 학대 있었다 preg_quote
(-19)이 대한; 그러나 백 슬래시는 디렉토리 구분 기호이므로 Windows 시스템에서는 실패합니다.
- php 는 곧 glob_quote 함수를 포함 할 수 있습니다.이 함수
preg_quote
는 모든 시스템 에서 동일한 골프를 치고 작동 할 것입니다.
반복자, 183 바이트
(순수하게 반복자가 아님) : SplFileInfo::__toString()
골프 $f->getBaseName()
와 $f->isDir()
이전 PHP 4 함수에 암시 적을 사용했습니다 .
function i($p){echo"$p
";foreach($i=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($p),1)as$f)echo str_repeat("\t",1+$i->getDepth()),basename($f),is_dir($f)?"/":"","
";}
- 후행 슬래시 필요 없음
- 숨겨진 항목 표시 및 재귀 (
ls -a
)
- 삽입
,4096
하거나 건너 뛰기 ,FilesystemIterator::SKIP_DOTS
전에 ),1
점 항목 건너 뛰기 (+5) ( ls -A
)
- 깃발의
1
약자RecursiveIteratorIterator::SELF_FIRST