如何获取最近修改过的文件的目录位置

时间:2018-04-10 03:48:31

标签: powershell

假设我们有两个目录C:\username\test1& C:\username\test2。两个目录都包含相同的文件script.ps1。现在使用powershell脚本我想在两个目录中搜索文件script.ps1&想要最新修改/创建的文件的完整文件位置。

我正在使用下面的命令,但它没有提供所需的输出

Get-ChildItem -Path "C:\username" script.ps1 -Recurse  | Where-object {!$_.psIsContainer -eq $true} | ForEach-Object -Process {$_.FullName} | select -last 1

2 个答案:

答案 0 :(得分:1)

对于给定目录,您可以使用

 Get-ChildItem C:\dir1\dir2 -Recurse -ErrorAction SilentlyContinue | Where {!$_.PsIsContainer}|select Name,DirctoryName, LastWriteTime |Sort LastWriteTime -descending | select -first 1   Name DirctoryName LastWriteTime

如果你想让它运行多个目录,你必须在每个目录上运行一个循环:

Get-ChildItem C:\dir\* | Where {$_.PsIsContainer} | foreach-object { Get-ChildItem $_ -Recurse -ErrorAction Sile   ntlyContinue | Where {!$_.PsIsContainer} | Select Name,DirectoryName, LastWriteTime, Mode | Sort LastWriteTime -descend   ing | select -first 1}

它将列出最后为每个目录修改的文件。

修改:搜索文件 如果文件存在于多个目录中,则可以使用以下命令以递归方式搜索文件:

Get-ChildItem -Path C:\Myfolder -Filter file.whatever -Recurse -ErrorAction SilentlyContinue -Force

答案 1 :(得分:0)

这将列出找到的所有文件版本,从最新到最旧:

Get-ChildItem -Path "C:\UserName" `
              -File `
              -Recurse `
              -Include "Script.ps1" |
    Sort-Object LastWriteTime -Descending |
        Format-Table LastWriteTime, FullName -AutoSize

如果您只想要最新版本,请将Format-Table行替换为:

Select-Object -First 1