我正在搜索所有文件夹中的文件。使用PowerShell进行递归文件搜索
Copyforbuild.bat
在许多地方都可用,我想递归搜索。
$File = "V:\Myfolder\**\*.CopyForbuild.bat"
如何在PowerShell中执行此操作?
我正在搜索所有文件夹中的文件。使用PowerShell进行递归文件搜索
Copyforbuild.bat
在许多地方都可用,我想递归搜索。
$File = "V:\Myfolder\**\*.CopyForbuild.bat"
如何在PowerShell中执行此操作?
使用Get-ChildItem cmdlet与-Recurse
开关:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
试试这个:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"}
您也可以使用'| Where-Object {!$ _PSIsContainer}'排除文件夹 – Gargravarr 2016-06-17 11:23:59
Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat
此外还将努力
我知道这个问题是老了,但我可以不要对Shay Levy的回答发表评论。
当搜索文件夹,你就可能会基于安全性的错误(例如,C:\Users
)使用下面的命令:使用通配符
Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse
过滤
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
过滤器使用正则表达式
Get-ChildItem -Path "V:\Myfolder" -Recurse
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' }
我用它来查找文件,然后让PowerShell显示结果整个路径:
dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName}
你总是可以使用通配符*
在文件夹名称和/或FileName.fileExtension。例如:
dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName}
上面的例子将搜索在C:\
驱动字Folder
开头的任何文件夹。所以,如果您有一个名为FolderFoo
和FolderBar
的文件夹,PowerShell将显示来自这两个文件夹的结果。
同样适用于文件名和文件扩展名。如果你想搜索与特定扩展名的文件,但不知道该文件的名称,你可以使用:
dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName}
或相反:
dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName}
我觉得这个答案非常有用,因为它解决了一个特定的用例 - 实际上想要使用您正在寻找的文件。 |给你的文件的全名是在其他答案中缺少的东西。 – Sanity1123 2017-08-01 15:17:29
似乎有一个问题,如果它会运行到您无权访问的目录中,整个搜索会因流程退出而中止。有没有办法解决这个问题? – deed02392 2013-06-20 11:24:14
尝试将ErrorAction参数设置为Continue或SilentlyContinue(如果它的值不像前面提到的那样)。 – 2013-06-20 11:56:54
做一件简单的事情: 'cd v:\ MyFolder'后面跟着 'ls -r -inc CopyForBuild.bat' – 2014-08-14 21:57:09