glob
以下是递归列出目录的两种方法:
Dir.glob("**/*/")
Dir.glob("**/")
输出看起来是一样的,至少对于一个小的子树来说。我错过的这两个命令之间有区别吗?
glob
以下是递归列出目录的两种方法:
Dir.glob("**/*/")
Dir.glob("**/")
输出看起来是一样的,至少对于一个小的子树来说。我错过的这两个命令之间有区别吗?
** 匹配 0 个或多个目录。通过在末尾放置一个 *,您可以删除根目录中的目录,实质上使其成为 1 个或更多:
a = Dir.glob('/tmp/**/*/').sort
b = Dir.glob('/tmp/**/').sort.size
b.size => 19
a.size => 18
b - a => ["/tmp/"]
但是,如果没有前导常量路径,看起来没有区别,因为 0 长度匹配并不有趣,也不会被放入结果中。
在那种情况下,没有。
但是,在某些情况下,这种类型的区别可能很重要。如果模式改为递归匹配文件**/*
而**/*/*
不是目录,则第一个将包含当前目录中的文件,而后者将仅列出比当前目录至少低一级的文件,因为/*/
中间必须匹配某物。