chỉ có các tệp trả về Powershell get-childitem


76

Tôi muốn sử dụng đệ quy get-childitem, nhưng chỉ có nó trả về các tệp không phải là thư mục. Giải pháp tốt nhất tôi có vẻ không tự nhiên:

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

Câu trả lời:


76

Thử đi:

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

4
nếu bạn loại trừ container thì bạn có thể rời khỏi *. *, đúng?
MDMoore313

100

Trong Powershell 3.0, nó đơn giản hơn,

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

Điều này thậm chí còn ngắn hơn,

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

2

Trong PowerShell 3.0, bạn cũng có thể sử dụng -Attributestham số mới được thêm vào
(cùng với các toán tử logic)

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

Chơi gôn

dir -r -Attributes !D

-4

Trong powershell 2.0, giải pháp tốt nhất và đơn giản nhất tôi nghĩ ra là bao gồm tất cả các tệp có phần mở rộng:

get-childitem -Recurse -include *.*

các thư mục không có phần mở rộng để chúng bị loại trừ, hãy cẩn thận không có phần mở rộng có tên tệp.


10
Điều này (về thư mục) là không đúng sự thật. Không có gì có thể ngăn bạn có thư mục với phần mở rộng
Romeo Ninov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.