powershell - full - ¿Cómo encontrar archivos en directorios con cierto nombre usando Get-ChildItem?
get-childitem full path (1)
Tengo una carpeta de proyecto llamada topfolder
y quiero encontrar todos los archivos en todas las subcarpetas que coincidan con un determinado patrón, por ejemplo, cuando la carpeta contiene foo
en cualquier parte de su nombre, quiero enumerar todos los archivos que contiene.
Probé algo como:
gci ./topfolder -rec -filter *foo*
pero tiene dos problemas:
- Solo se listarán los archivos que realmente contengan
foo
(quiero cualquier archivo en una carpeta similar a foo). - Los directorios que coincidan con este filtro también formarán parte del conjunto de resultados.
Entonces intenté esto:
gci ./topfolder/*foo* -include *.*
pero eso no funciona en absoluto: aparentemente, los comodines coinciden solo con un único segmento de una ruta, por lo que el patrón coincidirá con topfolder/foobar
pero no con topfolder/subfolder/foobar
.
La única manera que he encontrado hasta ahora es usar Get-ChildItem dos veces, de esta manera:
gci ./topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
Esto funciona pero parece un desperdicio llamar a gci
dos veces y espero que no haya encontrado una expresión de comodín correcta para algo como -Path
, -Filter
o -Include
.
¿Cuál es la mejor manera de hacer eso?
Yo usaría el parámetro Filter en lugar de Include, realiza mucho fatser
gci ./topfolder -rec -filter *foo* | where { $_.psiscontainer } | gci