任何人都知道进行递归目录列表的快速方法?我正在尝试通过大约 10tb 的 SAN,而“get-childitem -include”需要几天才能运行......我知道没有办法将其缩短到几分钟,但也许有办法将时间缩短到几个小时会很棒。我只需要一个我可以排序的列表不需要文件属性,因为我将使用它在我们的 SAN 上查找某些类型的文件,例如 PST 文件。
如果有人能指出我如何使用这里的编译代码的方向,我也应该很好。
任何人都知道进行递归目录列表的快速方法?我正在尝试通过大约 10tb 的 SAN,而“get-childitem -include”需要几天才能运行......我知道没有办法将其缩短到几分钟,但也许有办法将时间缩短到几个小时会很棒。我只需要一个我可以排序的列表不需要文件属性,因为我将使用它在我们的 SAN 上查找某些类型的文件,例如 PST 文件。
如果有人能指出我如何使用这里的编译代码的方向,我也应该很好。
我知道这已经晚了一天,而且还少了一美元,但是您可以为此目的使用 robocopy,它会列出超过 255 个字符的路径:
robocopy <SourceRoot> <DummyDestinationDir> /MIR /FP /NC /NS /NDL /NJH /NJS /LOG:<LogFilePath> /L
我知道它很冗长,但与 PowerShell 相比,robocopy 非常快,尽管我不知道它如何与 cmd 的目录叠加。您可以使用“>”重定向标准输出,也可以将 /LOG: 参数放在上面的位置。我会测试看看哪个更快。请注意,根据我的经验,不要使用 /TEE 选项控制台输出会减慢 robocopy 的速度。另请注意,文件路径将在输出中缩进,但这很容易使用文本编辑器进行纠正,而不是修剪前导和/或尾随空格。
作为 Shay sys,Powwershell V3 比 v2 好得多。
如果您只想要文件全名的列表,带有 /B (裸)开关的 legecy dir 命令仍然比 get-childitem 快
cmd /c dir <root path> /B /S /A-D
如果它只是您使用 Filter 参数的一个扩展,它比 -Include 快得多。我还建议尽可能使用 PowerShell 3(get-childitem 具有新的 -file 开关),据我记得列出 UNC 路径的性能在其中得到了增强(具有底层 .net 4 支持)。
另一种选择是从 cmd 窗口使用 dir 命令,应该非常快。