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
";}
- 显示隐藏的文件和目录,但没有递归隐藏目录
周围添加括号is_dir(...)?d(...):"..."
从输出(2)除去隐藏的条目
替换"#^\.#"
与#^\.+$#
到显示/隐藏递归条目但跳过点条目(2)
- 目录嵌套太深时可能会引发错误。
closedir($s);
在决赛前插入}
以解决(+13)
- 如果目录中包含没有名称的条目,将失败,
false!==
并以while条件修复(+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
转义字符(-19);但这在Windows系统上将失败,因为反斜杠是目录分隔符。
preg_quote
- php 可能很快会包含一个功能glob_quote,它将允许与
preg_quote
所有系统相同的打法并在所有系统上工作。
带有183个字节的迭代器
(嗯,不是纯粹的迭代器:我将隐式SplFileInfo::__toString()
用于golf $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