使用 PowerShell 脚本,有没有办法从排除具有重复 BaseName 的项目的文件夹中获取项目列表?

Using a PowerShell script, is there a way to get a list of Items from a folder that excludes items that have a duplicate BaseName?

我想将项目存储在名称重复但扩展名不同的目录中的 var 中。例如:有 .jpg 的文件和 .webp 的文件具有相同的 BaseName。我想排除那些,只添加没有相似 .webp 双胞胎的那些。

我用来获取所有文件的代码:

$images = Get-ChildItem $dir

我想在 $images.

中存储所有没有具有相同 BaseName 的 .webp 孪生的文件

使用 Group-Object cmdlet:

$images = Get-ChildItem -File $dir\*.jpg, $dir\*.webp |
            Group-Object BaseName |
              Where-Object { $_.Group.Extension -notcontains '.webp' } |
                ForEach-Object Group

注意:如果要使用递归文件检索(-Recurse),您可以简化为
Get-ChildItem -Recurse -File $dir -Include *.jpg, *.webp;也许令人惊讶的是,-Include 仅在 -Recurse 中得到正确支持 - 请参阅 GitHub issue #3304.