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" }

Respuestas:


76

Prueba esto:

gci . *.* -rec | where { ! $_.PSIsContainer }

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

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

-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.


10
Esto (sobre directorios) no es cierto. Nada puede detenerlo para tener un directorio con extensión
Romeo Ninov
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.