5

glob以下是递归列出目录的两种方法:

Dir.glob("**/*/")

Dir.glob("**/")

输出看起来是一样的,至少对于一个小的子树来说。我错过的这两个命令之间有区别吗?

4

2 回答 2

2

** 匹配 0 个或多个目录。通过在末尾放置一个 *,您可以删除根目录中的目录,实质上使其成为 1 个或更多:

 a = Dir.glob('/tmp/**/*/').sort     
 b = Dir.glob('/tmp/**/').sort.size
 b.size => 19
 a.size => 18
 b - a =>  ["/tmp/"]

但是,如果没有前导常量路径,看起来没有区别,因为 0 长度匹配并不有趣,也不会被放入结果中。

于 2012-10-25T16:02:11.533 回答
0

在那种情况下,没有。

但是,在某些情况下,这种类型的区别可能很重要。如果模式改为递归匹配文件**/***/*/*不是目录,则第一个将包含当前目录中的文件,而后者将仅列出比当前目录至少低一级的文件,因为/*/中间必须匹配某物。

于 2012-10-25T16:14:12.073 回答