5

globディレクトリを再帰的に一覧表示するには、次の 2 つの方法があります。

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

Dir.glob("**/")

少なくとも小さなサブツリーの場合、出力は同じように見えます。私が見逃しているこれら2つのコマンドに違いはありますか?

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

その場合はありません。

しかし、そのタイプの区別が重要になる場合があります。パターンが代わりに**/*ディレクトリ**/*/*ではなくファイルに再帰的に一致する場合、最初のパターンには現在のディレクトリ内のファイルが含まれ、後者のパターンでは現在のディレクトリから少なくとも 1 レベル下のファイルのみがリストされます/*/。なにか。

于 2012-10-25T16:14:12.073 に答える