以下是使用glob
递归列出目录的两种方法:
Dir.glob("**/*/")
Dir.glob("**/")
输出似乎是相同的,至少对于一个小子树。我错过的那两个命令之间有区别吗?
答案 0 :(得分:2)
**匹配0个或更多目录。通过在末尾放置*,您可以删除根目录中的目录,基本上将其设为1或更多:
a = Dir.glob('/tmp/**/*/').sort
b = Dir.glob('/tmp/**/').sort.size
b.size => 19
a.size => 18
b - a => ["/tmp/"]
虽然没有领先的常量路径,但看起来并不存在差异,因为0长度匹配不是很有趣并且不会被放入结果中。
答案 1 :(得分:0)
在那种情况下,没有。
但是,有些情况下,这种区分可能很重要。如果模式是**/*
和**/*/*
以递归方式匹配文件而不是目录,则第一个将包含当前目录中的文件,而后者仅列出至少一个级别的文件。当前目录,因为中间的/*/
必须匹配。