从前导字符数中识别重复文件

时间:2015-03-20 15:26:46

标签: powershell duplicate-removal

我有一个包含约的文件目录。已从其他来源复制的600个员工图像文件。

文件名格式为:

xxxxxx_123456_123_20141212.jpg

更新员工图片文件后,只需在同一位置创建另一个文件,最后只更改datetime

我需要能够识别最新的文件,但是我需要首先确定哪些文件是“重复的”。

我最初的想法是尝试匹配前14个字符,如果匹配,则计算出最近修改的日期,然后删除旧文件。

1 个答案:

答案 0 :(得分:0)

这需要PowerShell版本3。

$Path = 'C:\Users\madtomvane\Documents\PowerShellTest'
           #Get the files                        #Group them by name                          #Select the most resent file
$FilesToKeep = Get-ChildItem $Path -Recurse -File | Group-Object -Property {$_.Name[0..14]} | ForEach-Object {$_.Group | Sort-Object -Property LastWriteTime -Descending | Select-Object -First 1}

              #Get the files                          #Group them by name                    #Where there is more than one file in the group                            #Select the old ones
$FilesToRemove = Get-ChildItem $Path -Recurse -File | Group-Object -Property {$_.Name[0..14]} | Where-Object {$_.Group.Count -gt 1} | ForEach-Object {$_.Group | Sort-Object -Property LastWriteTime -Descending | Select-Object -Skip 1}
$FilesToRemove | Remove-Item