106

I'd like to use get-childitem recursively, but only have it return files not directories. The best solution I have just doesn't seem natural:

gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
Frank Schwieterman
  • 1,445
  • 3
  • 12
  • 20

5 Answers5

163

In Powershell 3.0, it is simpler,

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

This is even shorter,

gci -ad # alias for -Directory
gci -af # alias for -File
iraSenthil
  • 1,743
102

Try this:

gci . *.* -rec | where { ! $_.PSIsContainer }
Andy
  • 1,417
1

This is not working when anyone named the folder xxx.PDF:

get-childitem -Recurse -include *.pdf

Best then you can do:

Get-ChildItem -Recurse -Include *.pdf | where { ! $_.PSIsContainer }
Dominique
  • 2,373
1

In PowerShell 7, one can use -File switch:

Get-ChildItem *.pdf -Recurse -File
MartyIX
  • 615
-5

In powershell 2.0 the best and simplest solution i came up with is to include all files with an extension:

get-childitem -Recurse -include *.*

folders doesn't have an extension so they are excluded, beware of no extension named files.