使用 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.
我想将项目存储在名称重复但扩展名不同的目录中的 var 中。例如:有 .jpg
的文件和 .webp
的文件具有相同的 BaseName。我想排除那些,只添加没有相似 .webp
双胞胎的那些。
我用来获取所有文件的代码:
$images = Get-ChildItem $dir
我想在 $images
.
.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.