文件列表中的Powershell匹配语句
我正在目录中搜索只包含编号文件列表中的Powershell匹配语句,powershell,Powershell,我正在目录中搜索只包含编号0的文件 我使用了以下代码: $fileList = Select-String -Path c:\cnt\*.txt -pattern "0" 并输出一个列表,例如: C:\cnt\itm123.txt:1:0 c:\cnt\itm1234.txt:1:0 c:\cnt\itm123456.txt:1:0 我只需要提取itm####,但文件名中的总数可以在3-6之间 使用上述示例,我需要一个如下所示的列表: itm123 itm1234 itm123456 一旦
0
的文件
我使用了以下代码:
$fileList = Select-String -Path c:\cnt\*.txt -pattern "0"
并输出一个列表,例如:
C:\cnt\itm123.txt:1:0
c:\cnt\itm1234.txt:1:0
c:\cnt\itm123456.txt:1:0
我只需要提取itm####
,但文件名中的总数可以在3-6之间
使用上述示例,我需要一个如下所示的列表:
itm123
itm1234
itm123456
一旦得到该命令,我将运行每个SQL查询,但我不担心这一部分。cmdlet将返回Microsoft.PowerShell.Commands.MatchInfo对象的列表。如果使用参数-MemberType Properties
调用cmdlet,将获得所有公开属性的列表:
Name MemberType Definition
---- ---------- ----------
Context Property Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename Property string Filename {get;}
IgnoreCase Property bool IgnoreCase {get;set;}
Line Property string Line {get;set;}
LineNumber Property int LineNumber {get;set;}
Matches Property System.Text.RegularExpressions.Match[] Matches {get;set;}
Path Property string Path {get;set;}
Pattern Property string Pattern {get;set;}
在本例中,您正在查找Filename
属性。所以如果你执行
Select-String -Path c:\cnt\*.txt -pattern "0" | select FileName
您将获得所有文件名:
itm123.txt
itm1234.txt
itm123456.txt
现在,您所要做的就是删除文件扩展名,这可以使用.NET
方法完成:
输出:
itm123
itm1234
itm123456
为了澄清,您只需要文件名,而不需要路径?例如,itm1234.txt:1:0您要查找的文件是否由单个“0”字符组成?其他文件呢?
itm123
itm1234
itm123456