PHP, 180 byte
- primo argomento: il percorso deve avere una barra finale (o barra rovesciata)
- secondo argomento: il livello predefinito è
NULL
e sarà interpretato come 0
da str_repeat
; lancerà un avviso se non fornito
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
";}
- visualizza i file e le directory nascosti, ma non ricorre alle directory nascoste
aggiungendo parentesi is_dir(...)?d(...):"..."
per rimuovere le voci nascoste dall'output (+2)
sostituisci "#^\.#"
con #^\.+$#
per visualizzare / ricorrere alle voci nascoste ma salta le voci punto (+2)
- può generare errori quando le directory sono nidificate troppo in profondità. Inserisci
closedir($s);
prima della finale }
da correggere (+13)
- fallirà se una directory contiene una voce senza nome, antepone
false!==
alla condizione while da correggere (+8)
con glob, 182 byte (probabilmente 163 in futuro php)
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)."
";}
- non visualizza né fa ricorso a file / directory nascosti
2
sta per GLOB_MARK
aggiungere una barra a tutti i nomi di directory, come fals -F
- i
preg_replace
caratteri speciali glob di escape che
avrei potuto abusare preg_quote
di questo (-19); ma ciò fallirebbe sui sistemi Windows, poiché la barra rovesciata è il separatore di directory lì.
- php potrebbe presto includere una funzione glob_quote , che consentirà lo stesso golf
preg_quote
e funzionerà su tutti i sistemi.
con iteratori, 183 byte
(beh, non puramente iteratori: ho usato implicitamente il SplFileInfo::__toString()
golf $f->getBaseName()
e $f->isDir()
le vecchie funzioni di 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)?"/":"","
";}
- nessuna barra finale richiesta
- visualizza e recluta voci nascoste (
ls -a
)
- inserire
,4096
o ,FilesystemIterator::SKIP_DOTS
prima ),1
di saltare le voci punto (+5) ( ls -A
)
- bandiera
1
sta perRecursiveIteratorIterator::SELF_FIRST