windows - powershell 删除除最后三个以外的所有文件夹
问题描述
我在 Windows 机器上有一个文件夹 D:/Tests,它存储每天创建的文件夹。我需要在 linux 机器上运行 ansible 的代码,它将删除除最后三个创建的文件夹之外的所有文件夹。我已经在stackoverflow中挖掘了数十篇文章,但是大多数这些问题都是使用bat文件解决的。对我来说,这个选项不合适。根据我的发现,这与我需要的最相似:
Get-Childitem D:\Downloads_D -recurse | where {($_.creationtime -gt $del_date) -and ($_.name -notlike "*dump*" -and $_.name -notlike "*perform*")} | remove-item
但是我对 Powershell 的了解不足以对其进行编辑,以便它执行我的任务。有没有办法使用 ansible 模块、Windows 命令行命令或 Powershell 命令来实现我的目标?
解决方案
对于 powershell,您可以执行以下操作:
Get-ChildItem -Path D:\Downloads_D -Directory | Sort-Object -Property CreationTime | Select-Object -SkipLast 3 | Remove-Item
解释
-Directory
使用from过滤目录Get-ChildItem
CreationTime
使用按属性对目录进行排序Sort-Object
Select-Object
使用和跳过最后 3 个目录-SkipLast 3
。这可确保不删除最近创建的 3 个目录。- 管道
Remove-Item
删除目录
推荐阅读
- java - 如何读取文件并返回该文件中的字母
- python - Python,用户选择多个文件后获取文件名
- java - @JsonProperty 没有覆盖布尔值并且仍然删除 `is`
- python - 缺少 Spyder 依赖项 qtconsole >= 4.6.0: 4.5.1
- java - 使用 Puzzle 并弄清楚如何修复越界错误
- c++ - clang 格式捕获单行上的空语句
- c# - 在 Visual Studio 2019 中构建 C# 函数应用程序时出现“元数据生成失败”
- vega-lite - 将具有不同样式的数据添加到 Vega Lite 折线图
- sql - 是否有可能使这个 SQL 查询更快?
- python - tkinter.Frame.Grid 大小未正确显示