Tengo una carpeta de proyecto llamada topfolder
y quiero encontrar todos los archivos en todas las subcarpetas que coinciden con un patrón determinado, p. cuando la carpeta contiene foo
en cualquier lugar de su nombre, quiero enumerar todos los archivos que contiene.¿Cómo encontrar archivos en directorios con cierto nombre utilizando Get-ChildItem?
He intentado algo así como:
gci .\topfolder -rec -filter *foo*
pero tiene dos problemas:
- Sólo los archivos que contiene realmente
foo
se listarán (Quiero cualquier archivo en la carpeta foo-like). - Los directorios que coincidan con este filtro también formarán parte del conjunto de resultados.
Luego probé esto:
gci .\topfolder\*foo* -include *.*
pero que no funciona en absoluto - al parecer comodines de coincidencia solo un segmento de un trazado de manera que el patrón coincidirá topfolder\foobar
pero no topfolder\subfolder\foobar
.
La única forma que he encontrado hasta ahora era utilizar Get-ChildItem dos veces, como esta:
gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
Esto funciona, pero parece una pérdida de llamar gci
dos veces y espero simplemente didn' t encuentra una expresión de comodín derecha para algo como -Path
, -Filter
o -Include
.
¿Cuál es la mejor manera de hacerlo?
¿Cómo es diferente de mi último ejemplo? ¿No será incluso más lento que mi intento? – Borek
Lo siento, debo haber estado ciego;) –
Acabo de publicar una respuesta actualizada –