mają tylko pliki zwrotne Powershell get-childitem


76

Chciałbym rekurencyjnie korzystać z get-childitem, ale zwracaj tylko pliki, a nie katalogi. Najlepsze rozwiązanie, jakie mam, nie wydaje się naturalne:

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

Odpowiedzi:


76

Spróbuj tego:

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

4
jeśli wykluczasz kontenery, możesz pominąć *. *, dobrze?
MDMoore313,

99

W Powershell 3.0 jest to prostsze,

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

To jest jeszcze krótsze,

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

2

W PowerShell 3.0 możesz także użyć nowo dodanego -Attributesparametru
(wraz z operatorami logicznymi)

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

Grał w golfa

dir -r -Attributes !D

-4

W PowerShell 2.0 najlepszym i najprostszym rozwiązaniem, jakie wymyśliłem, jest dołączenie wszystkich plików z rozszerzeniem:

get-childitem -Recurse -include *.*

foldery nie mają rozszerzenia, więc są wykluczone, uważaj na pliki o nazwach rozszerzeń.


10
To (o katalogach) nie jest prawdą. Nic nie powstrzyma cię od posiadania katalogu z rozszerzeniem
Romeo Ninov
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.