2016-04-06 70 views
0

我嘗試計算具有相同名稱模式的文件夾中的文件。在這種情況下,「_」之前的每個符號都是重要的部分(模式)。Powershell - 計數具有相同名稱模式的文件

實施例(C:\ TEMP)
ct24fe_2016-03-01.txt
ct24fe_2016-03-04.txt
ct24fe_2016-03-08.txt
ct24fe_2016-04-01.txt
ct24fe_2016-04-04.txt
xye4ka_2015-03-04.txt
xye4ka_2015-03-08.txt
xye4ka_2015-03-10.txt
xye4ka_2015-03-15.txt
xye4ka_2015-04-01.txt
xye4ka_2015-04-04.txt
zzztgf_2014-04-16.txt
zzztgf_2014-04-18.txt
zzztgf_2014-04-19.txt
zzztgf_2014-05- 15.txt

結果應該是:

名稱|計數
ct24fe | 5
xye4ka | 6
zzztgf | 4

我該怎麼做?

感謝您的支持。

+0

您嘗試過任何可以幫到您的事嗎?預計你會嘗試一些東西,因爲SO不是代碼編寫服務。這就是說你需要看看'Group-Object',我認爲這已經存在重複。 – Matt

+0

嗨馬特,舒爾我嘗試組對象。但我在分隔字符串和收集/計數/分組結果方面存在問題。我搜索了它,但我只能在同一天找到該組的一個例子。 – Manuel

回答

0

所以我想出了這一點:

$input = "your stuff" 
$array = New-Object System.Collections.ArrayList 
$input | % {$array.Add($_.split("_")[0])} 

$array | Group-Object -NoElement 
+0

我會記住這個解決方案,完美的作品。這個解決方案比@mjolinor的解析速度慢一點點 – Manuel

0

一種可能性:

(Get-ChildItem c:\temp -Name) -replace '_.*' | Group-Object -NoElement 
+0

Add'|%{write-host $ _。name「|」 $ _。count}'到這個結尾以得到確切的請求輸出格式。 – LinuxDisciple

+0

作品完美,速度非常快 – Manuel

0

Group-Object支持scriptblocks爲-Property參數,可以通過管道直接將文件到它:

Get-ChildItem C:\temp |Group-Object {$_.Name -split '_' |Select -First 1} -NoElement 
+0

作品完美,速度非常快 – Manuel

相關問題