Powershell get-childitem dönüş dosyaları sadece var


76

Özyinelemeli get-childitem kullanmak istiyorum, ancak yalnızca dizinleri değil dosyaları döndürmesini sağlarım. Sahip olduğum en iyi çözüm doğal görünmüyor:

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

Yanıtlar:


76

Bunu dene:

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

4
kapları hariç tutuyorsanız * bırakabilirsiniz. *, sağ?
— MDMoore313

99

Powershell 3.0'da daha basittir.

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

Bu daha kısa,

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

2

PowerShell 3.0'da yeni eklenen -Attributesparametreyi de kullanabilirsiniz
(mantıksal operatörlerle birlikte)

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

golfed

dir -r -Attributes !D

-4

Powershell 2.0'da bulabildiğim en iyi ve en basit çözüm, uzantıya sahip tüm dosyaları eklemektir:

get-childitem -Recurse -include *.*

klasörler bir uzantıya sahip değildir, dolayısıyla dışlanırlar, dosya adında uzantılara dikkat edin.


10
Bu (dizinlerle ilgili) doğru değil. Hiçbir şey, uzantı ile dizine sahip olmanızı durduramaz
— Romeo Ninov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.