假设我们有两个目录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
答案 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