【问题标题】:Powershell - Get-ChildItem wildcardPowershell - Get-ChildItem 通配符
【发布时间】:2020-05-13 16:53:04
【问题描述】:

Get-ChildItem filename*.log.* 也会获取 filename*.log。如何仅获取以点扩展名 filename*.log.* 结尾的日志文件,以便删除它们?我想使用 Remove-Item 但决定使用 get-childItem 进行检查。

这是文件。

Server1234.log
Server1234.log.1
Server1234.log.2
Server1234.log.3
Server1234.log.4

Get-ChildItem filename*.log.* 显示以上所有内容。我不想在输出中出现Server1234.log

【问题讨论】:

  • Server*.log.* 不会获取 Server1234.log
  • 这很奇怪。我只是仔细检查了一下,它没有取到。但是不久前我看到它发生在显示 Server1234.log 的地方。无论如何,我很高兴它能正常工作。

标签: powershell


【解决方案1】:

您的过滤器应该可以工作。我创建了 3 个文件:

New-Item 'Server1234.log' -ItemType File
New-Item 'Server1234.log.1' -ItemType File
New-Item 'Server1234.log.2' -ItemType File

这是Get-ChildItem Server1234*.log.*输出

PS D:\> Get-ChildItem Server1234*.log.*

    Directory: D:\


Mode                LastWriteTime         Length Name                                                                                                                       
----                -------------         ------ ----                                                                                                                       
-a----       13/05/2020     10:51              0 Server1234.log.1                                                                                                           
-a----       13/05/2020     10:51              0 Server1234.log.2 

注意:Get-ChildItem cmdlet 的过滤器参数不使用正则表达式!如果您想使用正则表达式,您可以在 Where-Object cmdlet 中执行此操作:

Get-ChildItem | Where-Object { $_.Name -match 'Server123.*log\.+' }

【讨论】:

    【解决方案2】:

    你可以使用过滤器

    Get-ChildItem filename*.log.?*
    

    问号表示必须至少有一个字符...

    【讨论】:

    • 日志后面的点已经省略了Server1234.log的输出,我认为John没有正确描述这个例子...
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多