avere solo i file di ritorno get-childitem di Powershell


76

Vorrei usare ricorsivamente get-childitem, ma ho solo restituito file non directory. La migliore soluzione che ho non sembra naturale:

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

Risposte:


76

Prova questo:

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

4
se si escludono i contenitori, è possibile lasciare *. *, giusto?
MDMoore313,

99

In Powershell 3.0, è più semplice,

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

Questo è ancora più breve,

gci -ad # alias for -Directory
gci -af # alias for -File

2

In PowerShell 3.0 è inoltre possibile utilizzare il -Attributesparametro appena aggiunto
(insieme agli operatori logici)

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

golfed

dir -r -Attributes !D

-4

In PowerShell 2.0 la soluzione migliore e più semplice che mi è venuta in mente è quella di includere tutti i file con un'estensione:

get-childitem -Recurse -include *.*

le cartelle non hanno un'estensione quindi sono escluse, attenzione a nessuna estensione denominata file.


10
Questo (sulle directory) non è vero. Niente può impedirti di avere una directory con estensione
Romeo Ninov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.