Reputation: 211
I want to delete files recursively, while keeping the seven most recent ones. The following script deletes all files, even though I specify the skip
parameter.
$files = gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer}
foreach ($file in $files) {sort creationtime -desc | select -skip 7 | remove-item -path $file.FullName -force}
This script doesn't do a damn thing:
gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | foreach-object {sort creationtime -desc | select -skip 7 | remove-item -force }
Upvotes: 0
Views: 46
Reputation: 60918
try this
$files = gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | sort creationtime -desc | select -skip 7
foreach ($file in $files) {remove-item -path $file.FullName -force}
or more simply
gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | sort creationtime -desc |
select -skip 7 | remove-item -force
Upvotes: 2