在过滤路径中搜索特定的文件夹名称

时间:2019-08-30 09:42:42

标签: powershell powershell-2.0

我需要从过滤路径中搜索特定的文件夹名称。

例如:

我在磁盘m上有一些文件夹:

M:\
├───2.46.567
│   └───A
├───3.09.356
│   └───A
├───4.05.123
│   └───A
└───4.05.124
    └───B

我只想从4.05.xxx目录搜索文件夹A。而且我还想检查一下此文件夹是否是最后一个包含文件夹A的文件。

我尝试类似以下命令的内容:

Get-ChildItem -Path m:\* -recurse -filter '*4.05*' | sort -descending LastWriteTime

我可以在PowerShell中执行此操作吗?

3 个答案:

答案 0 :(得分:0)

尝试一下:

param(
$SourceDir = "M:\"
)
$a = gci $SourceDir | foreach { $i = gci $sourcedir\$_ -Name ; if($i.equals("A")) {"$_"} }

for($h=0;$h -le $a.Length-1; $h++ ) {
if($a[$h] -like "4.05.*") {
$a[$h]
if( $a[$h].equals($a[$a.length-1])) {
"It is the last one."
}}}

这将返回所有包含文件夹“ A”并具有“ 4.05”的文件夹。作为其名称的一部分。它还将返回它是否是数组中的最后一个文件夹,因此也返回包含“ A”的最后一个文件夹。

答案 1 :(得分:0)

Get-ChildItem允许在路径中的多个级别上使用通配符,而不仅仅是最后一个-无需递归。

Get-ChildItem 'M:\4.05.*\A' -Directory | Sort-Object -Descending LastWriteTime

在上面的树中,它仅返回一个条目:

    Directory: M:\4.05.123


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019-08-30     12:10                A

基于上述树具有相同结果的替代方案:

Get-ChildItem -Path 'M:\4.05.*' -Filter A -Recurse -Directory | Sort-Object -Descending LastWriteTime

PowerShell版本2变体

Get-ChildItem 'M:\4.05.*\A' | Where-Object {$_.PSIsContainer} |
    Sort-Object -Desc LastWriteTime | Select-Object -First 1 | Set-Location

答案 2 :(得分:0)

您也可以使用Resolve-Path

(Resolve-Path "M:\4.05.*\A").ProviderPath

这将返回您要查找的路径的字符串(不是文件夹对象!)。