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

Jawaban:


76

Coba ini:

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

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

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

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


10
Ini (tentang direktori) tidak benar. Tidak ada yang dapat menghentikan Anda untuk memiliki direktori dengan ekstensi
— Romeo Ninov
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.