PowerShell中如何删除目录内除最近10个文件外的所有旧文件
PowerShell中如何删除目录内除最近10个文件外的所有旧文件
嘿,这个需求我之前也碰到过,其实调整一下你现有的命令逻辑就能轻松搞定,核心就是精准筛选出要删除的旧文件——也就是把最新的10个文件排除在外~
核心实现思路
我们的目标是保留最新的10个文件,所以可以按这个逻辑来操作:
- 先把目录里的文件按最后修改时间从新到旧排序(这样最新的文件会排在最前面)
- 跳过前10个文件(也就是我们要保留的那些)
- 把剩下的所有旧文件传递给删除命令处理
直接可用的命令
这条命令就能完美实现你的需求:
Get-ChildItem -Path C:\Temp -File | Sort-Object -Property LastWriteTime -Descending | Select-Object -Skip 10 | Remove-Item -Verbose
逐段解释命令逻辑
Get-ChildItem -Path C:\Temp -File:获取目标目录下的所有文件(自动排除文件夹,避免误删目录)Sort-Object -Property LastWriteTime -Descending:按文件最后修改时间降序排序,最新的文件会排在结果的第一位Select-Object -Skip 10:跳过排序后的前10个文件(也就是我们要保留的最新文件),剩下的就是需要删除的旧文件Remove-Item -Verbose:执行删除操作,-Verbose参数会在控制台输出具体删除的文件名,方便你确认操作的准确性
重要安全提示
删除文件属于高危操作,建议你先执行下面的测试命令,确认哪些文件会被删除,避免误删重要内容:
Get-ChildItem -Path C:\Temp -File | Sort-Object -Property LastWriteTime -Descending | Select-Object -Skip 10
运行这条命令后,你会看到即将被删除的文件列表,确认没问题后,再替换成带Remove-Item -Verbose的完整命令即可。
另外,如果你的场景里按文件创建时间判断新旧更准确,只需要把命令里的LastWriteTime换成CreationTime就行,完全可以根据实际需求调整。
备注:内容来源于stack exchange,提问作者JamesThomasMoon
相关产品推荐
相关产品推荐

