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.