punya Powershell get-childitem hanya kembalikan file

76

Saya ingin menggunakan get-childitem secara rekursif, tetapi hanya mengembalikan file bukan direktori. Solusi terbaik yang saya miliki sepertinya tidak alami:

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

Jawaban:

76

Coba ini:

gci . *.* -rec | where { ! $_.PSIsContainer }
Andy
sumber
4
jika Anda tidak termasuk kontainer maka Anda dapat meninggalkan *. *, Baik?
MDMoore313
100

Di Powershell 3.0, lebih sederhana,

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

Ini bahkan lebih pendek,

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

Di PowerShell 3.0 Anda juga dapat menggunakan -Attributesparameter yang baru ditambahkan
(bersama dengan operator logis)

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

Golf

dir -r -Attributes !D
nixda
sumber
-4

Dalam PowerShell 2.0 solusi terbaik dan paling sederhana yang saya buat adalah dengan memasukkan semua file dengan ekstensi:

get-childitem -Recurse -include *.*

folder tidak memiliki ekstensi sehingga dikecualikan, waspadalah terhadap tidak ada file bernama ekstensi.

David Gacías Lacruz
sumber
10
Ini (tentang direktori) tidak benar. Tidak ada yang dapat menghentikan Anda untuk memiliki direktori dengan ekstensi
Romeo Ninov