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?
6 answers
Utilice el cmdlet Get-ChildItem con el conmutador -Recurse
:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
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
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}
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á
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' }
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"}
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