Linux“uniq -d”命令相当于 PowerShell?

Linux“uniq -d”命令相当于 PowerShell?

我尝试在 PowerShell 中编写一个脚本来查找具有相同名称的文件。之后,我想知道该文件组中有多少个重复的名称。我成功找到了这样的文件:

foreach ($i in Get-ChildItem *.)
{
    Write-Host (Get-ChildItem $i).BaseName
}

但之后我需要一个像在Linux中的命令cat file | sort | uniq -d。这个-d参数是我在PS中的目标。

我尝试了以下命令,但没有作用:

$var = (Write-Host (Get-ChildItem $i).BaseName | Sort-Object -Unique).Count

# Let's say there are files '1.mp4,1.mkv,2.mp4'
# I want variable var's value is 1, because only one group that has same file names

答案1

这应该可以满足你的需要,

$var = Get-ChildItem | Group-Object -Property BaseName | Where-Object { $_.Count -gt 1} | Select-Object -ExpandProperty Name 

答案2

我尝试了以下命令,但没有作用:

$var = (Write-Host (Get-ChildItem $i).BaseName | Sort-Object -Unique).Count

# 我希望变量 var 的值为 1,因为只有一个组具有相同的文件名

jfrmilner 的另一个答案将其存储BaseNamevar 不是正如您在问题中所要求的那样。

以下命令将计数(共享命令 BaseName 的不同文件集的数量)存储在中var,这可能是更有用的通用命令:

 $var = (Get-ChildItem $i).BaseName | Group-Object | ?{ $_.Count -gt 1 } | Measure-Object | Select-Object -ExpandProperty Count

示例 1 - 一组共享公共基名的文件(测试)

> Get-ChildItem


    Directory: F:\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/02/2020     12:18           1272 test.txt
-a----       16/02/2020     17:51             72 test.cmd
-a----       19/11/2019     21:50             19 output.txt
-a----       08/12/2019     18:47            119 GetBits.cmd
-a----       31/12/2019     14:31       26876158 SystemEvents.xml
-a----       08/01/2020     21:30            845 notepad++ regexp answer template.txt
-a----       12/02/2020     11:00          17755 usb.csv
-a----       01/03/2020     10:05            264 index.jpg
-a----       01/03/2020     10:09            264 New.txt


> (Get-ChildItem $i).BaseName | Group-Object | ?{ $_.Count -gt 1 } | Measure-Object | Select-Object -ExpandProperty Count
1
>

示例 2 - 两组共享一个公共基名的文件(测试和新)

> Get-ChildItem


    Directory: F:\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/02/2020     12:18           1272 test.txt
-a----       16/02/2020     17:51             72 test.cmd
-a----       19/11/2019     21:50             19 output.txt
-a----       08/12/2019     18:47            119 GetBits.cmd
-a----       31/12/2019     14:31       26876158 SystemEvents.xml
-a----       08/01/2020     21:30            845 notepad++ regexp answer template.txt
-a----       12/02/2020     11:00          17755 usb.csv
-a----       01/03/2020     10:05            264 index.jpg
-a----       01/03/2020     10:09            264 New.txt
-a----       08/03/2020     15:35              0 1
-a----       08/03/2020     15:52              0 New.xxx


> (Get-ChildItem $i).BaseName | Group-Object | ?{ $_.Count -gt 1 } | Measure-Object | Select-Object -ExpandProperty Count
2
>

相关内容