tener solo archivos de retorno get-childitem de Powershell

76

Me gustaría usar get-childitem de forma recursiva, pero solo hacer que devuelva archivos, no directorios. La mejor solución que tengo no parece natural:

gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
Frank Schwieterman
fuente

Respuestas:

76

Prueba esto:

gci . *.* -rec | where { ! $_.PSIsContainer }
Andy
fuente
44
si excluye contenedores, puede dejar el *. *, ¿derecho?
MDMoore313
100

En Powershell 3.0, es más simple,

gci -Directory #List only directories
gci -File #List only files

Esto es aún más corto

gci -ad # alias for -Directory
gci -af # alias for -File
iraSenthil
fuente
2

En PowerShell 3.0 también puede usar el -Attributesparámetro recién agregado
(junto con operadores lógicos)

Get-ChildItem -Recurse -Attributes !Directory+!System

Golfed

dir -r -Attributes !D
nixda
fuente
-4

En powershell 2.0, la solución mejor y más simple que se me ocurrió es incluir todos los archivos con una extensión:

get-childitem -Recurse -include *.*

las carpetas no tienen una extensión, por lo que están excluidas, tenga cuidado con ninguna extensión llamada archivos.

David Gacías Lacruz
fuente
10
Esto (sobre directorios) no es cierto. Nada puede detenerlo para tener un directorio con extensión
Romeo Ninov