Búsqueda recursiva de archivos mediante 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?

Author: Peter Mortensen, 2011-12-30

6 answers

Utilice el cmdlet Get-ChildItem con el conmutador -Recurse:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
 293
Author: Shay Levy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 18:25:15

Cuando busque carpetas donde podría 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
 25
Author: Mötz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-23 18:35:01

Uso esto para buscar archivos y luego hago que PowerShell muestre la ruta completa de los resultados:

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

Siempre puede usar el comodín * en el 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:\ que comience con la palabra Folder. Por lo tanto, si tiene una carpeta llamada FolderFoo y FolderBar PowerShell mostrará los resultados de ambas carpetas.

Lo mismo ocurre con el nombre del archivo y la extensión del archivo. Si quieres buscar para un archivo con una extensión determinada, 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}
 19
Author: BinaryJoe01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-23 18:37:34
Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat

También funcionará

 9
Author: user3303020,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 19:29:15

Filtrar usando comodines:

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

Filtrado usando una expresión regular:

Get-ChildItem -Path "V:\Myfolder" -Recurse
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' }
 4
Author: MovGP0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-23 18:35:44

Prueba esto:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"}
 3
Author: Sevenfold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-07 21:31:29