gpt4 book ai didi

powershell - 尝试在包含大量文件的目录中获取唯一的扩展名列表非常缓慢

转载 作者:行者123 更新时间:2023-12-03 09:35:30 26 4
gpt4 key购买 nike

我正在尝试在一个大约 9TB 且包含数十万个文件的数据集中获取唯一扩展名的列表以及每个扩展名的示例文件。我尝试使用 get-child 项目,当我过滤到没有很多文件的文件夹时它可以工作,但是当我将它过滤到一个有很多文件的文件夹时,它似乎永远不会启动。下面是我一直在尝试的两个例子。

$Extensions = New-Object System.Collections.ArrayList
$filesReviewed = 0
Get-ChildItem \\server\folder -Exclude 'excludeFolder'| Get-ChildItem | Where-Object {$_.Name.Equals('files')} | Get-ChildItem -OutBuffer 1000 |
foreach{
Write-Progress -Activity "Files Reviewed: " -Status "$filesReviewed"
$filesReviewed++
if( $Extensions.contains($_.Extension) -eq $False) {
$Extensions.add($_.Extension)
Write-Host $_.Extension
Write-Host $Path = $_.FullName
}

}

我开始尝试使用 dir,认为它可能更快,但它有同样的问题

set-location \\server\folder
dir | dir | Where-Object {$_.Name.Equals('files')} | dir -OutBuffer 10

最佳答案

Get-ChildItem 会检索有关您在本例中不需要的文件的大量信息,并且会降低您的速度。您可以尝试使用 [System.IO.Directory]::GetFiles 来加快速度

$extensions=@{}
[System.IO.Directory]::GetFiles("\\server\folder", "*.*", [System.IO.SearchOption]::AllDirectories) | %
{
$extensions[[System.IO.DirectoryInfo]::new($_).Extension]++
}
$extensions | ft -a

关于powershell - 尝试在包含大量文件的目录中获取唯一的扩展名列表非常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57916514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com