2010-03-26 60 views
3

我有一個包含2000多個文件的文件夾。我想按日期對文件進行計數。如何使用PowerShell按日期對文件進行分組?

所以用:

Mode    LastWriteTime  Length Name 
    ----    -------------  ------ ---- 
    -a---  2010-03-15 12:54 AM 10364953 file1.txt 
    -a---  2010-03-15 1:07 AM 10650503 file2.txt 
    -a---  2010-03-16 1:20 AM 10118657 file3.txt 
    -a---  2010-03-16 1:33 AM 9735542 file4.txt 
    -a---  2010-03-18 1:46 AM 10666979 file5.txt 

我想看到的:

Date   Count 
---------- ------ 
2010-03-15 2 
2010-03-16 2 
2010-03-18 1 

謝謝!

回答

12

集團,對象可以很容易地處理這種苦差事:

Get-ChildItem | Group {$_.LastWriteTime.ToString("yyyy-MM-dd")} | Sort Name 

如果你只想看看格式表中的日期和計數方式,如下所示:

Get-ChildItem | Group {$_.LastWriteTime.ToString("yyyy-MM-dd")} | Sort Name | 
    Format-Table Name,Count -auto 
+0

啊,單線,甚至更好。 –

+1

注意:'group {$ _。LastWriteTime.Date}'可以工作,但也會返回'Name'屬性中的時間戳(雖然設置爲'0:00:00')。這可能是爲什麼基思在這裏使用格式化的字符串(最初讓我困惑)。另一種選擇是'Format-Table -GroupBy',它具有不同的輸出。 – Joey

+0

加上格式字符串得到Shane想要的格式的日期。 :-)。請注意,您必須小心使用Format-Table -GroupBy。如果您使用它,請務必首先對您正在分組的內容進行排序,否則您可以多次指定相同的「組」。 –

2

您可以使用一個哈希表來收集您需要的信息GCI是GET-childitem別名

$dict = new-object -t system.collections.hashtable 
gci * |? { $dict[$_.lastwritetime.date]++ } 
$dict 
+0

太棒了, ! –

相關問題