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

Respostas:


76

Tente o seguinte:

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

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

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

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


10
Isso (sobre diretórios) não é verdade. Nada pode impedi-lo de ter diretório com extensão
Romeo Ninov
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.