首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell:在名称文件夹中查找数字

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

Stack Overflow用户
提问于 2016-04-28 03:12:49
回答 1查看 2.6K关注 0票数 0

我有一个目录,其中包含以下文件夹:

000000000000000000,0001251557a1485767,0144dshbc,014758,1147857484752169和1234567890123458z

我使用这段代码根据文件夹的名称查找文件夹:

代码语言:javascript
复制
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个数字字符的文件夹的名称。因此,其结果应该是:

0144 014758,014758,0001251557a1485767和123456789012345678z

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

0001251557a1485767,0144dshbc和014758

我的问题是:我怎样才能找到"123456789012345678z",文件夹,它的名字里有18个数字,但末尾有一个字母。

我的目标是找到所有没有18个数字字符的文件夹。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 04:56:44

此代码将找到名称中没有全部18个数字字符的文件。详细的日志记录将向您展示如何对每个值进行分级。非匹配值将在管道上返回。

代码语言:javascript
复制
$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()语句中。检查长度可以理解。match运算符查找一个字符串,该字符串以(由^)一个或多个(由+)数字(0-9表示)开头,并立即命中字符串的末尾( $)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36904594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档