PHP, 180 bayt
- ilk argüman: yolun sonunda eğik çizgi (veya ters eğik çizgi) olması gerekir
- ikinci argüman: seviye varsayılan olarak
NULLşu şekilde olur ve 0tarafından yorumlanır str_repeat; belirtilmezse bir uyarı gönderir
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
";}
- görüntüler dosyaları ve dizinleri gizli ama -recurse gizli dizinleri gelmez
parantez içine eklemek is_dir(...)?d(...):"..."çıkışı (2) gizli girdileri kaldırmak için
değiştirin "#^\.#"ile#^\.+$# (+2) / ekrana gizli girdileri recurse ama girdileri nokta atlamak
- dizinler çok derin yuvalanmışsa hata atabilir. Finalden
closedir($s);önce ekle}Düzeltmek (+13)
- bir dizin adsız bir girdi içeriyorsa başarısız olur,
false!==düzeltmek için while koşulunun başına (+8)
glob ile, 182 bayt (muhtemelen php gelecekteki 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)."
";}
- gizli dosyaları / dizinleri görüntülemez veya geri almaz
2 anlamına gelir GLOB_MARK , tüm dizin adlarına eğik çizgi eklerls -F
preg_replacekaçar özel karakterler topak
ı istismar olabilirdipreg_quote (-19) bunun için; ancak ters eğik çizgi orada dizin ayırıcı olduğundan Windows sistemlerinde başarısız olur.
- php olabilir yakında bir işlev içerir glob_quote aynı şekilde golf sağlayacak,
preg_quotetüm sistemlerde ve iş.
yineleyicilerle, 183 bayt
(sadece yineleyiciler değil: SplFileInfo::__toString()golf $f->getBaseName()ve $f->isDir()eski PHP 4 işlevlerini örtük olarak kullandım .)
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)?"/":"","
";}
- sondaki eğik çizgi gerekmez
- gizli girişleri görüntüler ve tekrarlar (
ls -a)
- insert
,4096veya ,FilesystemIterator::SKIP_DOTSöncesinde ),1((+5) girişlerini nokta atlamak için ls -A)
- bayrak
1duruyorRecursiveIteratorIterator::SELF_FIRST