How to group files by date using PowerShell?

I have a folder with 2000+ files. I want to count the files by date.

so with:

  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  

I'd like to see:

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

Thanks!


Solution 1:

Group-Object can handle this sort of chore pretty easily:

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

If you only want to see the date and count tack on the Format-Table as shown below:

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

Solution 2:

You can use a hash table to collect the information you need:

     $dict = New-Object -TypeName System.Collections.Hashtable
     Get-ChildrenItem * | Where-Object { $dict[$_.lastwritetime.date]++ }
     $dict