在PowerShell中删除包含包含特定字符串的文件的目录

时间:2018-12-15 22:53:32

标签: powershell

尝试使用Windows PowerShell删除包含具有特定内容的XML文件的所有目录。尽可能用

列出所有包含正确模式的文件
ls -r -Filter *.xml | ?{ $_ | Select-String -Pattern "ACC_cont"}

但是无法从输出中获取路径并删除目录及其所有内容。可能存在多个带​​有正确模式的XML文件的目录,我想将它们全部删除。

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

Get-ChildItem -Recurse -Filter *.xml | 
  Select-String -List -Pattern "ACC_cont" |
    Remove-Item -Recurse -LiteralPath { Split-Path -Parent $_.Path } -WhatIf

-WhatIf预览操作;删除它以执行实际删除。

  • Select-String直接接受Get-ChildItem从管道输出的文件信息对象。

    • -List使Select-String在文件中的第一次匹配之后停止,从而提高了效率。
  • Select-String输出的match-info对象具有.Path属性,其中包含输入文件路径,因此Split-Path -Parent $_.Path获得匹配文件的目录路径。

  • 将脚本块(Split-Path -Parent $_.Path中的{ ... }传递到Remove-Item的{​​{1}}参数是提供参数值的延迟绑定脚本块的实例从每个输入对象动态派生的,因此-LiteralPath删除找到匹配XML文件的每个目录。