C#使用EnumerateDirectories列出所有"leaf"子目录

Sam*_*m2S 8 c# directory enumerate

大家早上好,我有一个包含数千个不同深度子目录的文件夹.我需要列出所有不包含子目录的目录(众所周知的"行尾").如果它们包含文件就没问题.有没有办法用EnumerateDirectories做到这一点?

例如,如果返回完全递归的EnumerateDirectories:

/files/
/files/q
/files/q/1
/files/q/2
/files/q/2/examples
/files/7
/files/7/eb
/files/7/eb/s
/files/7/eb/s/t
Run Code Online (Sandbox Code Playgroud)

我只对以下内容感兴趣:

/files/q/1
/files/q/2/examples
/files/7/eb/s/t
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 15

这应该工作:

var folderWithoutSubfolder = Directory.EnumerateDirectories(root, "*.*", SearchOption.AllDirectories)
     .Where(f => !Directory.EnumerateDirectories(f, "*.*", SearchOption.TopDirectoryOnly).Any());
Run Code Online (Sandbox Code Playgroud)

  • 计票结果删除-1 ...似乎对我有用 (3认同)