Búsqueda recursiva de archivos usando PowerShell

Estoy buscando un archivo en todas las carpetas.

Copyforbuild.bat está disponible en muchos lugares, y me gustaría buscar recursivamente.

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

¿Cómo puedo hacerlo en PowerShell?

Use el cmdlet Get-ChildItem con el parámetro -Recurse :

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

Al buscar carpetas donde puede obtener un error basado en la seguridad (por ejemplo, C:\Users ), use el siguiente comando:

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

Lo uso para buscar archivos y luego mostrar a PowerShell toda la ruta de los resultados:

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

Siempre puede usar el comodín * en FolderName y / o FileName.fileExtension . Por ejemplo:

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

El ejemplo anterior buscará cualquier carpeta en la unidad C:\ comenzando con la palabra Folder . Entonces, si tiene una carpeta llamada FolderFoo y FolderBar PowerShell mostrará los resultados de ambas carpetas.

Lo mismo aplica para el nombre de archivo y la extensión de archivo. Si desea buscar un archivo con una cierta extensión, pero no sabe el nombre del archivo, puede usar:

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

O viceversa:

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

También funcionará

Filtrar usando comodines:

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

Filtrando usando una expresión regular:

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

Prueba esto:

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