使用PowerShell进行recursion文件search

我正在search所有文件夹中的文件。

Copyforbuild.bat在很多地方都可用,我想recursionsearch。

 $File = "V:\Myfolder\**\*.CopyForbuild.bat" 

我怎样才能在PowerShell中做到这一点?

使用带-Recurse开关的Get-ChildItem cmdlet:

 Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 

我知道这个问题很老,但是我不能对Shay Levy的回答发表评论。

在基于安全性(例如C:\Users )search可能会出现错误的文件夹时,请使用以下命令:

 Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 

我用它来查找文件,然后让PowerShell显示结果的整个path:

 dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName} 

您始终可以在FolderName和/或FileName.fileExtension中使用通配符* 。 例如:

 dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName} 

上面的例子将search以Folder开始的C:\驱动器中的任何文件Folder 。 所以,如果你有一个名为FolderFoo的文件夹, FolderBar PowerShell将显示来自这两个文件夹的结果。

文件名和文件扩展名也一样。 如果您要search具有特定扩展名的文件,但不知道可以使用的文件的名称:

 dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName} 

或反之亦然:

 dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName} 
 Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat 

也将工作

使用通配符进行筛选

 Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse 

使用正则expression式进行过滤

 Get-ChildItem -Path "V:\Myfolder" -Recurse | Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' } 

尝试这个:

 Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"}