powershell - 使用powershell获取具有数字名称的目录中的所有目录
问题描述
我将首先说我是 powershell 的新手......我可以获取指定目录中的所有目录,但我只需要获取名称为数字的目录。例子:
1 - include
2 - include
3 - include
10 - include
LastFailed - exclude
我还需要按顺序订购它们以供以后处理。
这是我到目前为止所拥有的:
$Dirs = Get-ChildItem -Path ..\..\..\builds -Attributes D
foreach($D in $Dirs)
{
Write-Host $D.Name
}
解决方案
要获取仅具有数字名称的文件夹的列表,您可以执行以下操作:
$Path = '..\..\..\builds'
$Dirs = Get-ChildItem -Path $Path -Attributes D |
Where-Object { $_.Name -match '^\d+$' } |
Sort-Object
$Dirs
上面的代码使用 Where-Object 子句仅过滤掉仅具有数字名称的文件夹。它通过使用-match
运算符和正则表达式来做到这一点,^\d+$
其中:
`^` --> start at the beginning of the line
`\d` --> look for numeric values (0-9)
`+` --> there must be 1 or more numeric values present
`$` --> the end of the string
取而代之的是\d
,也可以使用[0-9]
代码结尾来编写代码,Sort-Object
因为 OP 希望对文件夹列表进行排序。因为我们没有告诉这里要对什么属性进行排序,所以 Powershell 默认为 Name。
上面将产生一个列表,如:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 18-8-2018 16:13 1
d----- 18-8-2018 16:13 10
d----- 18-8-2018 16:13 2
d----- 18-8-2018 16:13 5
如您所见,列表按属性名称排序,但是.. 数字被视为字符串,因此 '10' 跟在 '1' 后面。
我们最有可能在这里做的是让 Sort-Object 将名称视为实数,而不是字符串。为了解决这个问题,我们添加了Select-Object
cmdlet 以创建我们自己的具有我们需要的属性的对象。
我们可以获得通过管道传入的 DirInfo 对象的标准属性,并且可以创建一个新的计算属性。
在这里,我添加了一个名为的计算属性SortIndex
,它只是从 Name 转换而来的数值,然后我们将其用于数值排序:
$Dirs = Get-ChildItem -Path $Path -Attributes D |
Where-Object { $_.Name -match '^\d+$' } |
Select-Object -Property FullName, Name, LastWriteTime, @{Name = 'SortIndex'; Expression = {[int]$_.Name} } |
Sort-Object -Property SortIndex
$Dirs
现在它产生了一个对象数组,当打印到控制台时看起来像这样:
FullName Name LastWriteTime SortIndex
-------- ---- ------------- ---------
D:\Temp\1 1 18-8-2018 16:13:22 1
D:\Temp\2 2 18-8-2018 16:13:25 2
D:\Temp\5 5 18-8-2018 16:13:28 5
D:\Temp\10 10 18-8-2018 16:13:31 10
希望这可以帮助。
推荐阅读
- python - Web抓取Python时的编码问题
- python - scikit-learn 中多类问题的 ROC 区域
- bash - Git 分支名称不会显示在 Mac 终端上
- c# - 尝试使用 VS 代码调试 C# 程序时,提示“prelaunchtask 'build' 已终止,退出代码为 1”,如何解决?
- ffmpeg - 如何替换 mkv 文件中的两个字幕?
- python - 如何在python中运行exe文件
- quickbooks - serverVersion () 的 QBWebConnector 失败
- ruby-on-rails - 无法在 Gitlab Rails 控制台中按名称搜索文件
- xml - 使用 Xpath 解析 Socialblade 信息并将其导入 Google 表格
- android - 如何使用 LiveData 和 MVVM 架构轮询服务器?