Powershell:在名称文件夹中查找数字

时间:2016-04-28 03:12:49

标签: powershell search numbers find directory

我的目录中包含以下文件夹:

  

000000000000000000,0001251557a1485767,0144dshbc,014758,1114767857484752169和123456789012345678z

我使用此代码根据名称查找文件夹:

Get-ChildItem | Where-Object {$_.Name -notmatch "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"}

我希望此代码仅返回名称不包含18个数字字符的文件夹的名称。所以,结果应该是这样的:

  

0144dshbc,014758,0001251557a1485767和123456789012345678z

但是当我运行这些命令时,我会得到这些文件夹:

  

0001251557a1485767,0144dshbc和014758

我的问题:我如何找到文件夹" 123456789012345678z ",其名称中有18个数字,但最后有一个字母。

我的目标是找到所有不包含18个数字字符的文件夹。 感谢。

1 个答案:

答案 0 :(得分:1)

此代码将查找名称中不包含18个全部数字字符的文件。详细日志记录将显示每个值的评级方式。在管道上返回不匹配的值。

$VerbosePreference = 'continue'

$list = Get-ChildItem | Select-Object -ExpandProperty Name
foreach ($item in $list)
{

    if($item.Length -eq 18 -and $item -match '^[0-9]+$' )
    {
        Write-verbose 'is both 18 chars and numeric'
        Write-verbose "- $item, length: $($item.Length)"
    }
    else
    {
        Write-verbose 'is not 18 chars and numeric'
        Write-verbose "- $item, length: $($item.Length)"
        Write-Output $item
    }
}

所有重要的逻辑都在IF()语句中。检查长度是否可以理解。匹配运算符查找以(由^表示)一个或多个(由+表示)数字([0-9])开头的字符串,并立即命中字符串的结尾($)。