ter somente arquivos de retorno do Powershell get-childitem

76

Eu gostaria de usar o get-childitem recursivamente, mas ele apenas retorna arquivos, não diretórios. A melhor solução que tenho não parece natural:

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

Respostas:

76

Tente o seguinte:

gci . *.* -rec | where { ! $_.PSIsContainer }
Andy
fonte
4
se você estiver excluindo contêineres, poderá deixar o *. *, direito?
MDMoore313
100

No Powershell 3.0, é mais simples,

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

Isso é ainda mais curto,

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

No PowerShell 3.0, você também pode usar o -Attributesparâmetro recém-adicionado
(junto com operadores lógicos)

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

Golfe

dir -r -Attributes !D
nixda
fonte
-4

No powershell 2.0, a melhor e mais simples solução que encontrei é incluir todos os arquivos com uma extensão:

get-childitem -Recurse -include *.*

As pastas não possuem uma extensão, por isso são excluídas. Cuidado com nenhuma extensão chamada arquivos.

David Gacías Lacruz
fonte
10
Isso (sobre diretórios) não é verdade. Nada pode impedi-lo de ter diretório com extensão
Romeo Ninov