列出目录中最后修改的子目录

时间:2019-03-25 15:02:43

标签: powershell

我有一个带有子目录的测试目录:

test-1-2 1.1
test-2-1 1.3

可以为测试中的每个子目录输出最新修改的子目录的名称和版本。假设DIR1或DIR2可以是任何名称。

最终视图更丰富:

test*-*-*

目前,我只能获得的输出只有最新的gci 'C:\test' |where { $_.psiscontainer } |foreach { get-childitem $_.name |sort creationtime | select -expand name -last 1 } PS C:\test> gci 'C:\test' |where { $_.psiscontainer } |foreach { get-childitem $_.name |sort creationtime | select -expand name -last 1 } test-1-2 test-2-1 而不是DIR *:

library(dplyr)
df_final = tableresults%>%
  left_join(averagetable, by =c('winning_cluster' = ' Group.1')%>% # does the join
  select(-Moving, - Feeding, -Standing) #unselect uncalled columns

1 个答案:

答案 0 :(得分:-2)

我不太明白你的问题。您是否可以尝试重新表述该问题,或者给出更多/不同的示例?

我猜到了您要达到的目标。看下面的代码。

我假设您的文件夹结构将始终相同。输出将显示每个test- -文件夹中最新的名为“ DIR”的文件夹。我有点将文件夹的深度组织成“层次”,以期使事情更清晰。

我经常发现,与在管道中使用“ ForEach-Object”相比,使用ForEach和s脚本块可以使您更好地控制数据。

$Level1 = Get-ChildItem -Path "C:\test" -Directory

ForEach ($D1 in $Level1)
{
    Write-Host "Getting ChildItem of DIR: $($D1.FullName)"

    $Level2 = Get-ChildItem -Path $D1.FullName -Directory

    ForEach ($D2 in $Level2)
    {
        Write-Host "Getting ChildItem of DIR: $($D2.FullName)`n`n"

        $LastModDir = Get-ChildItem -Path $D2.FullName -Directory | Sort-Object CreationTime | Select-Object Name -Last 1

        Write-Host "$D2 $($LastModDir.Name)"
    }
}

输出:

test-1-1 DIR1
test-1-2 DIR2
test-2-1 DIR1
test-2-2 DIR2

即使这不是您要实现的目标,这些技术也可能对您实现目标有用。

编辑: 我只是注意到您要对1.1 etc文件夹而不是DIR文件夹进行排序。只需添加一个带有ForEach循环的“级别”即可。