glob
ディレクトリを再帰的に一覧表示するには、次の 2 つの方法があります。
Dir.glob("**/*/")
Dir.glob("**/")
少なくとも小さなサブツリーの場合、出力は同じように見えます。私が見逃しているこれら2つのコマンドに違いはありますか?
glob
ディレクトリを再帰的に一覧表示するには、次の 2 つの方法があります。
Dir.glob("**/*/")
Dir.glob("**/")
少なくとも小さなサブツリーの場合、出力は同じように見えます。私が見逃しているこれら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 レベル下のファイルのみがリストされます/*/
。なにか。